如何使用通配符TABLE_DATE_RANGE()在Big查询中删除多个表?

jfk*_*k83 3 sql google-bigquery google-cloud-platform

我正在查看文档,但还没有找到使用通配符删除多个表的方法。

我正在尝试做这样的事情,但是没有用:

DROP TABLE
 TABLE_DATE_RANGE([clients.sessions_], 
                  TIMESTAMP('2017-01-01'), 
                  TIMESTAMP('2017-05-31'))
Run Code Online (Sandbox Code Playgroud)

Den*_*gar 9

删除表[表名];bigquery 现在支持。所以这里是一个纯粹的 SQL/bigquery UI 解决方案。

select concat("drop table ",table_schema,".",   table_name, ";" )
from <dataset-name>.INFORMATION_SCHEMA.TABLES
where table_name like "partial_table_name%"
order by table_name desc
Run Code Online (Sandbox Code Playgroud)

审核您是否删除了正确的表。复制并粘贴回 bigquery 以删除列出的表。


nim*_*ate 5

对于数据集stats和表格(如daily_table_20181017保持日期约定),我将使用简单的脚本和gcloud命令行工具:

for table in `bq ls --max_results=10000000 stats |grep TABLE |grep daily_table |awk '{print $1}'`; do echo stats.$table; bq rm -f -t stats.$table; done
Run Code Online (Sandbox Code Playgroud)


jfk*_*k83 1

我只是使用 python 循环这个问题并使用 Graham 示例解决它:

 from subprocess import call


   return_code = call('bq  rm -f -t dataset.' + table_name +'_'+  period + '', shell=True)
Run Code Online (Sandbox Code Playgroud)

  • 我不建议这样做。最好要么继续使用 bash,要么全力使用 Python。 (3认同)