使用TABLE_DATE_RANGE超过1年的表

时间:2014-06-12 18:54:17

标签: google-bigquery

我尝试使用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年的表通配符?

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()没有错误的数据值。