2014-06-12 11 views
6

Ich versuche, google bigquery zu verwenden, um Daten aus Tabellen mit einem Datumsplatzhalter auszuwählen. Ich möchte in der Lage sein, die TABLE_DATE_RANGE-Funktion zu verwenden, aber ich muss über einen großen Zeitraum (> 1 Jahr) abfragen. Gerade jetzt meine Abfrage funktioniert für ein Jahr im Wert von Daten, sondern etwas über die ich erhalten:Verwenden von TABLE_DATE_RANGE mit mehr als 1 Jahr Tabellen

Fehler: TABLE_DATE_RANGE Fehler: zu viele Tage

#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; 

Ist das nur eine Einschränkung von BigQuery ? Oder gibt es eine Möglichkeit, Platzhalter für Tabellen mit Datumsbereichen größer als 1 Jahr zu verwenden?

Antwort

5

Ich hatte auch Probleme mit TABLE_DATE_RANGE(). Hier ist eine mögliche Abhilfe, vorausgesetzt, Ihre Tabellen workspace.intervaldata20090303 benannt sind, etc .:

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; 

Ich habe ein ähnliches Szenario (Datum Tabellen partitioniert) und bin in der Lage Abfragen über 2 Jahre im Wert von Daten laufen TABLE_QUERY mit() ohne Fehler.