Google bigquery 在Bigquery中删除带有分区的表

Google bigquery 在Bigquery中删除带有分区的表,google-bigquery,Google Bigquery,我有一个数据集,其中有几个不同的表。对于其中一个表,它有100个分区。我想删除具有特定名称的表的所有分区 例如,我在一个数据集中有以下内容。到目前为止,我一次只能删除一个分区。我是否需要删除所有TableA分区 tableA_20161220 tableA_20161221 tableA_20161223 tableB_20161220 tableB_20161221 tableB_20161223 在Web UI中,一次只能删除一个表 总的来说,BigQueryAPI一次只接受一个表 使用或

我有一个数据集,其中有几个不同的表。对于其中一个表,它有100个分区。我想删除具有特定名称的表的所有分区

例如,我在一个数据集中有以下内容。到目前为止,我一次只能删除一个分区。我是否需要删除所有TableA分区

tableA_20161220
tableA_20161221
tableA_20161223
tableB_20161220
tableB_20161221
tableB_20161223

在Web UI中,一次只能删除一个表

总的来说,BigQueryAPI一次只接受一个表


使用或您可以“编写脚本”使此过程完全或半自动化,以删除循环中所需的表

正如Mikhail已经指出的,您可以使用API编写脚本

我们经常使用CLI执行此类任务。这个小片段应该足以让你继续。使用时要小心,因为它会执行“强制””删除,即不确认:

bq ls --format=csv <DATASET> | awk '{if(NR>1)print}' | awk -F, '{print $1}' | grep 'A' | xargs -n 1 -P 4 -i bq rm -f <DATASET>.{}
bq ls--format=csv | awk'{if(NR>1)print}'{awk-F'{print$1}'| grep'A'| xargs-n1-p4-i bq rm-F.{}

这是对格雷厄姆提供的内容稍加修改的版本

bq ls <PROJECT_ID>:<DATASET> | grep "<SHARDED_TABLE_NAME>" | awk '{print $1}' | xargs "-I%" bq rm -f <PROJECT_ID>:<DATASET>."%"
4.对于输出中的每个表,执行删除操作

xargs "-I%" bq rm -f <PROJECT_ID>:<DATASET>."%"
正如格雷厄姆已经提到的,要小心删除的数据集

grep "<SHARDED_TABLE_NAME>"
awk '{print $1}'
xargs "-I%" bq rm -f <PROJECT_ID>:<DATASET>."%"
bq ls <PROJECT_ID>:<DATASET> | grep "tableA" | awk '{print $1}' | xargs "-I%" bq rm -f <PROJECT_ID>:<DATASET>."%"