使用TABLE_DATE_RANGE超过1年的表

Nat*_* S. 6 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;
Run Code Online (Sandbox Code Playgroud)
#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;
Run Code Online (Sandbox Code Playgroud)

这只是bigquery的限制吗?或者有没有办法使用日期范围大于1年的表通配符?

Dav*_*ith 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;
Run Code Online (Sandbox Code Playgroud)

我有一个类似的场景(日期分区表),并且能够使用TABLE_QUERY()运行超过2年的数据查询而没有错误.