bigquery 的 time_partitioning_expiration 参数如何工作?
How bigquery's time_partitioning_expiration parameter work?
我创建了一个分区类型为 day 的 table,并且我已通过 bq
命令行工具将 time_partitioning_expiration 设置为 1209600 秒(14 天)。我已经通过 运行 bq show
在 table 上验证了设置是否正确,我可以看到
"timePartitioning": {
"expirationMs": "1209600000",
"type": "DAY"
},
"type": "TABLE"
然而,分区中似乎有我预计已被删除的数据。
SELECT
count(*) as c,
_partitiontime as pDate
FROM [poc.reporting]
group by pDate
;
1 373800 2016-07-17 00:00:00 UTC
2 640800 2016-07-18 00:00:00 UTC
3 373800 2016-07-16 00:00:00 UTC
我的理解是设置 time_partition_expiration 将 remove/delete 分区在内部正确吗?如果是这样,为什么我的情况没有删除分区?
分区的到期时间不是基于分区的日期,而是基于存储准确添加到 table 的时间。因此,例如,对于分区到期时间为 14 天的 table,如果分区 20160717 的数据在 20160730 重述,则该分区的数据将从 20160730 起到期 14 天。您可以验证最旧数据的写入时间在分区中使用以下查询:
SELECT MSEC_TO_TIMESTAMP(creation_time) from [project:dataset.table$__PARTITIONS_SUMMARY__]
Pavan 的最佳答案中描述的行为似乎在 2016 年 12 月 13 日发生了变化,到期时间现在基于分区日期,而不是最后修改日期。
来自最新的文档:
For example, if the partition expiration is set to 60 days and data is
written to partition 20170101 on January 30, 2017, then the data
expires on January 1, 2017 + 60 days.
我创建了一个分区类型为 day 的 table,并且我已通过 bq
命令行工具将 time_partitioning_expiration 设置为 1209600 秒(14 天)。我已经通过 运行 bq show
在 table 上验证了设置是否正确,我可以看到
"timePartitioning": {
"expirationMs": "1209600000",
"type": "DAY"
},
"type": "TABLE"
然而,分区中似乎有我预计已被删除的数据。
SELECT
count(*) as c,
_partitiontime as pDate
FROM [poc.reporting]
group by pDate
;
1 373800 2016-07-17 00:00:00 UTC
2 640800 2016-07-18 00:00:00 UTC
3 373800 2016-07-16 00:00:00 UTC
我的理解是设置 time_partition_expiration 将 remove/delete 分区在内部正确吗?如果是这样,为什么我的情况没有删除分区?
分区的到期时间不是基于分区的日期,而是基于存储准确添加到 table 的时间。因此,例如,对于分区到期时间为 14 天的 table,如果分区 20160717 的数据在 20160730 重述,则该分区的数据将从 20160730 起到期 14 天。您可以验证最旧数据的写入时间在分区中使用以下查询:
SELECT MSEC_TO_TIMESTAMP(creation_time) from [project:dataset.table$__PARTITIONS_SUMMARY__]
Pavan 的最佳答案中描述的行为似乎在 2016 年 12 月 13 日发生了变化,到期时间现在基于分区日期,而不是最后修改日期。
来自最新的文档:
For example, if the partition expiration is set to 60 days and data is written to partition 20170101 on January 30, 2017, then the data expires on January 1, 2017 + 60 days.