我目前在一个项目中有多个数据集,我想知道是否有办法一次知道过去90天内未更新的表是什么,这意味着它属于长期存储范围bigquery。有一些SQL语法吗?
谢谢
答案 0 :(得分:0)
不是SQL,但可能的解决方案是使用bq
工具。描述一个表将返回长期存储字节数(numLongTermBytes
):
$ bq show --format=prettyjson dataset.table
...
"kind": "bigquery#table",
"lastModifiedTime": "1534845362446",
"location": "US",
"numBytes": "56",
"numLongTermBytes": "56",
"numRows": "3",
...
因此,您可以扩展它以列出每个数据集中的所有表,并从每个表中获取所需的信息。根据{{3}},我做了一个简单的例子:
#!/bin/bash
project=PROJECT_ID
dataset=DATASET_NAME
max_results=100
# get list of tables
tables=$(bq ls --max_results $max_results "$project:$dataset" | awk '{print $1}' | tail -n +3)
# get LTS bytes for each table
for table in $tables
do
printf '%-35s %-50s\n' "$table" "$(bq show --format prettyjson $project:$dataset.$table | grep numLongTermBytes)"
done
,您将获得类似于以下内容的输出:
Dfp "numLongTermBytes": "0",
SO_55506947 "numLongTermBytes": "144",
SO_55506947_bis "numLongTermBytes": "144",
a "numLongTermBytes": "7",
a1 "numLongTermBytes": "399",
aaa "numLongTermBytes": "8",
adaptive "numLongTermBytes": "1085",
adaptive_view "numLongTermBytes": "0",
audience_segment_map_exp_test "numLongTermBytes": "300",
b "numLongTermBytes": "7",
...