我尝试使用google bigquery从带有日期通配符的表中选择数据。我希望能够使用TABLE_DATE_RANGE函数,但我需要查询大日期范围(> 1年)。现在我的查询适用于一年的数据,但是我得到的任何东西都是:
错误:TABLE_DATE_RANGE错误:太多天
#Fails
SELECT
system_id, sample_date, e_pv_array
FROM
(TABLE_DATE_RANGE(workspace.intervaldata,
TIMESTAMP('2009-03-01'),
TIMESTAMP('2010-03-04')))
WHERE
system_id = 20006
and e_pv_array is not null;
#Works
SELECT
system_id, sample_date, e_pv_array
FROM
(TABLE_DATE_RANGE(workspace.intervaldata,
TIMESTAMP('2009-03-01'),
TIMESTAMP('2010-03-03')))
WHERE
system_id = 20006
and e_pv_array is not null;
这只是bigquery的限制吗?或者有没有办法使用日期范围大于1年的表通配符?
答案 0 :(得分:5)
我也遇到过TABLE_DATE_RANGE()的问题。 这是一个可能的解决方法,假设您的表名为workspace.intervaldata20090303等:
SELECT
system_id, sample_date, e_pv_array
FROM
TABLE_QUERY(workspace, "integer(regexp_extract(table_id, r'intervaldata([0-9]+)')) BETWEEN 20090301 and 20100304")
WHERE
system_id = 20006
and e_pv_array is not null;
我有一个类似的场景(日期分区表),并且能够运行超过2年的查询'使用TABLE_QUERY()没有错误的数据值。