有没有办法使用 bigquery API 删除分区表中的旧分区?

Posted

技术标签:

【中文标题】有没有办法使用 bigquery API 删除分区表中的旧分区?【英文标题】:Is there a way of deleting old partitions in a partitioned table using bigquery API? 【发布时间】:2016-12-11 15:24:37 【问题描述】:

我有一个每日分区表,我想通过 API 删除旧分区。

文档只说 3 个月未更新的旧分区以 50% 的折扣存储。感谢 Google,但我真的不打算将这些数据保留半个世纪。

我认为分区表的全部意义在于允许删除旧数据,但我发现的只是折扣。有没有办法做到这一点?

【问题讨论】:

我也在等待这个功能。尚不支持修改分区表的 DML 语句。 cloud.google.com/bigquery/docs/reference/standard-sql/… 【参考方案1】:

您可以使用Tables: delete API 通过将分区指定为 yourTable$YYYYMMDD 来删除表的特定分区

您可以使用timePartitioning.expirationMs 属性来设置Number of milliseconds for which to keep the storage for a partition。您可以在通过Tables: insert API 创建表时设置此属性,也可以通过Tables: patch API 修补现有表

【讨论】:

通过 yourTable$YYYYMMDD 删除表在通过 select * from [datawarehouse:dev.temps$__PARTITIONS_SUMMARY__] 访问时似乎不会更新表的分区列表 是的。这可能是要报告给 BigQuery 团队的错误。同时,实际表在某种意义上被更新,已删除分区中不再有行,因此没有成本。您可以通过以下方式进行检查:SELECT _PARTITIONTIME AS partition_id, COUNT(1) FROM [datawarehouse:dev.temps] 还要注意,删除分区时,包含该分区的缓存查询不会失效;见code.google.com/p/google-bigquery/issues/detail?id=894

以上是关于有没有办法使用 bigquery API 删除分区表中的旧分区?的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法在 BigQuery 表上创建自定义日分区?

如何在bigquery中按月创建分区

有没有办法使用预编译的 sql 完成工作并通过 java api (bigquery) 多次运行

使用 Python 和 API 创建 Bigquery 分区表

有没有办法从 javascript 调用 bigquery API 函数?

有没有办法在 bigquery 中删除表列?