2014-06-12 40 views
6

我試圖使用google bigquery從表中選擇數據與日期通配符。我希望能夠使用TABLE_DATE_RANGE函數,但我需要查詢一個較大的日期範圍(> 1年)。現在我的查詢工作了一年的價值的數據,但任何超過我得到:使用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; 

這只是大量查詢的限制?或者有沒有辦法使用日期範圍大於1年的表格通配符?

回答

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數據()沒有錯誤。