首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bigquery的time_partitioning_expiration参数是如何工作的?

bigquery的time_partitioning_expiration参数是如何工作的?
EN

Stack Overflow用户
提问于 2016-08-02 09:55:29
回答 2查看 3.1K关注 0票数 3

我已经创建了一个分区类型日期的表,并通过time_partitioning_expiration命令行工具将bq设置为1209600秒(14天)。我已经通过在表上运行bq show来验证这些设置是否正确,我可以看到

代码语言:javascript
复制
"timePartitioning": {
    "expirationMs": "1209600000", 
    "type": "DAY"
  }, 
  "type": "TABLE"

但是,分区中似乎有我期望被删除的数据。

代码语言:javascript
复制
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将在内部删除/删除分区吗?如果是的话,为什么在我的例子中没有删除分区呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-03 20:46:08

分区的过期不是基于分区的日期,而是基于将存储准确地添加到表的时间。因此,例如,对于分区过期时间为14天的表,如果在20160730上重述分区20160717的数据,则该分区的数据将从20160730到期。可以使用以下查询验证分区中最古老数据的写入时间:

代码语言:javascript
复制
SELECT MSEC_TO_TIMESTAMP(creation_time) from [project:dataset.table$__PARTITIONS_SUMMARY__]
票数 3
EN

Stack Overflow用户

发布于 2017-12-11 14:19:15

看起来在2016年12月13日,Pavan的回答中描述的行为发生了变化,到期时间现在是基于分区日期,而不是最后修改的日期。

来自最近的文档:

例如,如果分区过期设置为60天,且数据在2017年1月30日写入分区20170101,则数据将于2017年1月1日+ 60天过期。

参考资料:BQ分区表

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38717242

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档