使用 Dataflow BigQuery 接收器设置 table 过期时间
Setting table expiration time using Dataflow BigQuery sink
使用 Dataflow 的 BigQueryIO.Write
接收器时,是否可以在 BigQuery table 上设置 expiration 时间?
例如,我想要这样的东西(见最后一行):
PCollection<TableRow> mainResults...
mainResults.apply(BigQueryIO.Write
.named("my-bq-table")
.to("PROJECT:dataset.table")
.withSchema(getBigQueryTableSchema())
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED))
.withExpiration(1452030098l) //**this table should expire on 31st Jan
我在数据流 API 中看不到任何有助于此的内容。当然,我可以只使用 BigQuery API,但是在指定接收器时能够在 via Dataflow 中使用它会更好。
数据流目前不支持此功能 API。我们可以考虑尽快添加它,因为它应该是一个简单的添加。
您可以在数据集上设置 defaultTableExpirationMs
,然后在该数据集内创建的任何 table 的到期时间将为 "now + dataset.defaultTableExpirationMs"。
见https://cloud.google.com/bigquery/docs/reference/v2/datasets#defaultTableExpirationMs
使用 Dataflow 的 BigQueryIO.Write
接收器时,是否可以在 BigQuery table 上设置 expiration 时间?
例如,我想要这样的东西(见最后一行):
PCollection<TableRow> mainResults...
mainResults.apply(BigQueryIO.Write
.named("my-bq-table")
.to("PROJECT:dataset.table")
.withSchema(getBigQueryTableSchema())
.withWriteDisposition(BigQueryIO.Write.WriteDisposition.WRITE_TRUNCATE)
.withCreateDisposition(BigQueryIO.Write.CreateDisposition.CREATE_IF_NEEDED))
.withExpiration(1452030098l) //**this table should expire on 31st Jan
我在数据流 API 中看不到任何有助于此的内容。当然,我可以只使用 BigQuery API,但是在指定接收器时能够在 via Dataflow 中使用它会更好。
数据流目前不支持此功能 API。我们可以考虑尽快添加它,因为它应该是一个简单的添加。
您可以在数据集上设置 defaultTableExpirationMs
,然后在该数据集内创建的任何 table 的到期时间将为 "now + dataset.defaultTableExpirationMs"。
见https://cloud.google.com/bigquery/docs/reference/v2/datasets#defaultTableExpirationMs