基于TIMESTAMP列的分区的BigQuery分区到期

时间:2018-03-04 00:29:17

标签: google-bigquery

我正在尝试在已设置基于TIMESTAMP列的分区的表上测试分区到期。问题是分区到期似乎不起作用。

以下是我的工作:

1)使用TIMESTAMP列分区和60秒到期时间创建表

bq mk --table --project_id cool_project-007 --time_partitioning_field ts --time_partitioning_expiration 60  --schema ts:TIMESTAMP,label_1:STRING  dataset_sample.sample_x

enter image description here

2)从列中相同类型的其他表中选择ALL并将值复制/附加到新创建的表sample_x

3)我希望删除所有ts(TIMESTAMP)超过60秒的记录。但他们不是!

enter image description here

拜托,我做错了什么?

2 个答案:

答案 0 :(得分:2)

与表过期一样,分区过期由定期后台进程完成,因此表/分区在到期时间不会立即过期。它们在后台进程扫描时被删除。通常情况下,人们将其设置为几个月或至少几天,因此这种小延迟不是问题。

好消息是我们已更改为从查询结果中过滤掉过期的分区。它将在一两个星期内发布。

答案 1 :(得分:0)

很棒的问题 - 我认为你和之前的回答错误解释了TIMESTAMP专栏的分区! 即使它是用于分区的TIMESTAMP列 - 分区本身仍然是DAY -

  

time by timestamp_column - 使用TIMESTAMP列的日期对表进行分区

您可以看到更多here

这意味着您不应期望删除ts(TIMESTAMP)超过60秒的所有记录。相反,这应该在相应日期结束后60秒发生