我在尝试查询15个月的数据时遇到问题。 我知道bigquery的通配符函数,但我似乎无法让它们与我的表一起工作。
例如,如果我的表被调用:
xxxx_201501,
xxxx_201502,
xxxx_201503,
...
xxxx_201606
如何选择从201501
到今天( current_timestamp )的所有内容?
似乎每天必须有桌子,我错了吗?
我还读到您可以使用regex
,但无法找到方法。
答案 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'' ')