我正在尝试在已设置基于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
2)从列中相同类型的其他表中选择ALL并将值复制/附加到新创建的表sample_x
3)我希望删除所有ts(TIMESTAMP)超过60秒的记录。但他们不是!
拜托,我做错了什么?
答案 0 :(得分:2)
与表过期一样,分区过期由定期后台进程完成,因此表/分区在到期时间不会立即过期。它们在后台进程扫描时被删除。通常情况下,人们将其设置为几个月或至少几天,因此这种小延迟不是问题。
好消息是我们已更改为从查询结果中过滤掉过期的分区。它将在一两个星期内发布。
答案 1 :(得分:0)
很棒的问题 - 我认为你和之前的回答错误解释了TIMESTAMP专栏的分区! 即使它是用于分区的TIMESTAMP列 - 分区本身仍然是DAY -
time by timestamp_column - 使用TIMESTAMP列的日期对表进行分区
您可以看到更多here
这意味着您不应期望删除ts(TIMESTAMP)超过60秒的所有记录。相反,这应该在相应日期结束后60秒发生