使用 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