今天早上关于新表通配符功能的好消息!有没有办法在包含日期但没有前缀的表上使用TABLE_DATE_RANGE()?
我有一个包含名为YYYYMMDD(无前缀)的表的数据集。通常我会这样查询:
SELECT foo
FROM [mydata.20140319],[mydata.20140320],[mydata.20140321]
LIMIT 100
我尝试了以下但是我收到了一个错误:
SELECT foo
FROM
(TABLE_DATE_RANGE(mydata.,
TIMESTAMP('2014-03-19'),
TIMESTAMP('2015-03-21')))
LIMIT 100
以及:
SELECT foo
FROM
(TABLE_DATE_RANGE(mydata,
TIMESTAMP('2014-03-19'),
TIMESTAMP('2015-03-21')))
LIMIT 100
答案 0 :(得分:7)
此处的基本错误已于2015-05-14修复。您应该能够将TABLE_DATE_RANGE
与纯数字表名一起使用。您需要以“。”结束数据集。并将名称括在括号中,以便解析器不会抱怨。这应该有效:
SELECT foo
FROM
(TABLE_DATE_RANGE([mydata.],
TIMESTAMP('2014-03-19'),
TIMESTAMP('2015-03-21')))
LIMIT 100
答案 1 :(得分:6)
注意:底层错误已修复,请参阅我的其他答案。 后代留下的原始回复(因为解决方法应该仍然有效,以防因某些原因需要它)
好问题。这应该有效,但目前还没有。我已经提交了一个内部错误。与此同时,解决方法是使用TABLE_QUERY
函数,如:
SELECT foo
FROM (
TABLE_QUERY(mydata,
"TIMESTAMP(table_id) BETWEEN "
+ "TIMESTAMP('2014-03-19') "
+ "AND TIMESTAMP('2015-03-21')"))
答案 2 :(得分:3)
请注意,在BigQuery中支持standard SQL时,您可以使用_TABLE_SUFFIX
,而不是TABLE_QUERY
。例如:
SELECT foo
FROM `mydata_*`
WHERE _TABLE_SUFFIX BETWEEN '20140319' AND '20150321'
另请查看此question以获取有关BigQuery标准SQL的更多信息。