GCP 数据流 UDF 输入

GCP Dataflow UDF input

我正在尝试使用 Dataflow 删除 Datastore Bulk 并使用 JS UDF 来过滤关于 doc 的实体。但是这段代码:

function func(inJson) {
  var row = JSON.parse(inJson);
  var currentDate = new Date();
  var date = row.modifiedAt.split(' ')[0];

  return some code
}

原因

TypeError: Cannot read property "split" from undefined

输入应为实体的 JSON 字符串,实体应具有 modifiedAt 属性.

究竟是什么将 Dataflow 传递给 UDF,我如何将其记录到 Dataflow 控制台?

假设 modifiedAt 是您添加的 属性,我希望 Dataflow 中的 JSON 与 Datastore rest api (https://cloud.google.com/datastore/docs/reference/data/rest/v1/Entity). Which would mean you probably want row.properties.modifiedAt . You also probably want to pull out the timestampValue of the property (https://cloud.google.com/datastore/docs/reference/data/rest/v1/projects/runQuery#Value).

看看这篇关于如何开始使用数据流 UDF 的新文章published Google Cloud blog

随着 Datastore Bulk Delete Dataflow template, the UDF input is the JSON string of the Datastore Entity. As noted by Jim, the properties are nested under properties field per this schema.

关于您关于日志记录的其他问题,您可以在您的 UDF 中添加以下打印语句,其输出将显示在 Worker Logs 下的 Dataflow 控制台中:

print(JSON.stringify(row, null, 2))

或者,您可以使用以下日志查询查看 Cloud Logging 中的日志:

log_id("dataflow.googleapis.com/worker")
resource.type="dataflow_step"