我创建了一个分区类型为day的表,并已从bq
命令行工具将time_partitioning_expiration设置为1209600秒(14天)。我通过在表上运行bq show
来验证设置是否正确,我可以看到
"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将在内部删除/删除分区?如果是这样,为什么我没有删除分区?
最佳答案
分区的到期不是基于分区的日期,而是基于将存储完全添加到表的时间。因此,例如,对于一个分区到期时间为14天的表,如果在20160730上重述了分区20160717的数据,则该分区的数据将从20160730开始过期14天。您可以使用以下命令验证分区中最早的数据的写入时间以下查询:
SELECT MSEC_TO_TIMESTAMP(creation_time) from [project:dataset.table$__PARTITIONS_SUMMARY__]
关于google-bigquery - bigquery的time_partitioning_expiration参数如何工作?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38717242/