BigQuery的动态表格后缀不限制处理的数据

时间:2020-04-02 03:50:25

标签: google-bigquery

我一直在尝试从特定表中动态选择,以减少总处理数据。当按如下所述手动设置过滤器时,使用_TABLE_SUFFIX似乎可以工作

请注意,此处没有声明的变量,这是使用BigQuery网络用户界面的预定查询,使用声明的变量似乎会阻止保存输出表。

SELECT * FROM SOME_TABLE
WHERE _TABLE_SUFFIX BETWEEN "20200101" and FORMAT_DATE("%Y%m%d", CURRENT_DATE())

>>> 50MB PROCESSED

但是,基于其他一些表动态设置_TABLE SUFFIX似乎会进行全表扫描。请注意,此处选择的值是相同的。

SELECT * FROM SOME_TABLE
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE("%Y%m%d", (SELECT MAX(date) FROM OTHER TABLE)) and FORMAT_DATE("%Y%m%d", CURRENT_DATE())

>>> 350mb PROCESSED

1 个答案:

答案 0 :(得分:1)

如果您的表是集群的,那么这根本不是问题。

请参阅:

现在,如果要限制查询这些表的数据量,可以使用脚本:

DECLARE begin_date STRING 
  DEFAULT (FORMAT_DATE("%Y%m%d", (SELECT MAX(date) FROM OTHER TABLE)));

SELECT * FROM SOME_TABLE
WHERE _TABLE_SUFFIX BETWEEN begin_date and FORMAT_DATE("%Y%m%d", CURRENT_DATE())