bigquery 长期存储表列表

use*_*284 0 google-bigquery google-cloud-platform

根据 GCP 文档:

长期储存:

如果一个表连续 90 天没有被编辑,该表的存储价格会自动下降大约 50%。当表被视为长期存储时,不会降低性能、持久性、可用性或任何其他功能。

有没有办法在 Bigquery 数据集中列出符合此条件的所有表?

Gra*_*ley 7

一种方法是使用一些 Bash 魔法。我已经使用jq预安装的Cloud Shell 快速解决了这个问题。它的工作原理是:

  1. 列出所有数据集
  2. 列出每个数据集中的每个表
  3. 对于每个表,调用bq show获取该表的元数据信息
  4. 使用从每个表中jq拉出idnumLongTermBytes
  5. 的数值numLongTermBytes是长期存储量。如果它是 0,那么它是活动存储。

不确定这将如何与分区和集群表一起使用(您需要测试),但至少应该足以让您入门。你当然可以写一个更简洁的 Python 脚本或其他东西,但我喜欢 Bash 的“简单性”:)

注意到这有点脆弱/脆弱的解决方案。

bq ls --format=json | jq -r '.[].id' | xargs -n 1 -P 4 -i bq ls --format=json {} | jq -r '.[].id' | xargs -n 1 -P 4 -i bq show --format=json {} | jq -r '.id + "," + .numLongTermBytes'
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明