适用于xxxx_yyyymm格式表的TABLE_DATE_RANGE

时间:2016-06-13 14:02:26

标签: sql google-bigquery

我在尝试查询15个月的数据时遇到问题。 我知道bigquery的通配符函数,但我似乎无法让它们与我的表一起工作。

例如,如果我的表被调用:

  

xxxx_201501,
  xxxx_201502,
  xxxx_201503,
  ...
  xxxx_201606

如何选择从201501到今天( current_timestamp )的所有内容?

似乎每天必须有桌子,我错了吗?

我还读到您可以使用regex,但无法找到方法。

2 个答案:

答案 0 :(得分:2)

使用标准SQL,您可以在_TABLE_SUFFIX伪列上使用WHERE子句,如下所述:

Is there an equivalent of table wildcard functions in BigQuery with standard SQL?

在这种特殊情况下,它将是:

SELECT ... from `mydataset.xxx_*` WHERE _TABLE_SUFFIX >= '201501';

答案 1 :(得分:1)

评论时间有点长。

如果您使用的是标准SQL方言,那么我认为该功能尚未实现。

如果您使用的是旧版SQL方言,则可以使用TABLE_DATE_RANGE()等功能。这个和其他表通配符函数很好documented

编辑:

哦,我明白了。最简单的方法是将表存储为YYYYMM01,以便您可以使用范围查询。

但是,您也可以使用table_query()

from table_query(t, 'right(table_id, 6) >= ''201501'' ')