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

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

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

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

【问题讨论】:

标签: google-bigquery


【解决方案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
猜你喜欢
  • 2010-11-26
  • 1970-01-01
  • 2017-07-22
  • 1970-01-01
  • 2017-02-18
  • 1970-01-01
  • 2017-06-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多