2016-06-17 31 views
8

Vorrei sapere se esiste un modo per trasmettere i dati a una specifica partizione temporale di una tabella BigQuery. La documentazione dice che è necessario utilizzare decoratori tavolo:Streaming dei dati in una partizione temporale BigQuery specifica

Loading data using partition decorators

Partition decorators enable you to load data into a specific partition. To adjust for timezones, use a partition decorator to load data into a partition based on your preferred timezone. For example, if you are on Pacific Standard Time (PST), load all data generated on May 1, 2016 PST into the partition for that date by using the corresponding partition decorator:

[TABLE_NAME]$20160501

Fonte: https://cloud.google.com/bigquery/docs/partitioned-tables#dealing_with_timezone_issues

E:

Restating data in a partition

To update data in a specific partition, append a partition decorator to the name of the partitioned table when loading data into the table. A partition decorator represents a specific date and takes the form:

$YYYYMMDD

Fonte: https://cloud.google.com/bigquery/docs/creating-partitioned-tables#creating_a_partitioned_table

dati, ma se cerco di usarle durante lo streaming Ho ricevuto il seguente errore: I decoratori di tabelle non possono essere utilizzati con lo streaming insert.

Grazie in anticipo!

risposta

5

Ci scusiamo per l'inconveniente. Stiamo pensando di fornire supporto per questo nel prossimo futuro. Si prega di rimanere sintonizzati per ulteriori aggiornamenti.

possibili soluzioni che potrebbero funzionare in molti casi:

  1. Se avete la maggior parte dei dati disponibili (che a volte è il caso in cui ribadendo i dati per una vecchia partizione), è possibile utilizzare un lavoro di carico con la partizione come destinazione.

  2. Un'altra opzione è quella di streaming ad una tabella temporanea e dopo che i dati sono stati scaricati dal buffer di streaming, utilizzare bq cp

+0

Ciao Pavan, grazie per la risposta. Se dovessi usare la seconda opzione e avere dati da molti giorni, qual è l'approccio migliore? 1) Trasmetti i dati a una tabella diversa per ogni giorno e quindi copia la tabella partizionata finale utilizzando i decoratori. 2) Trasmettere i dati a una tabella univoca e quindi interrogare i risultati per ogni giorno in base a un campo e copiarli nella tabella partizionata finale utilizzando i decoratori. 3) Altro Grazie in anticipo –

+0

Domanda veloce: esiste un motivo per cui non è possibile eseguire lo streaming direttamente alla tabella (non una partizione specifica) e lasciare che bigquery inferisca il timestamp della partizione. Comprendiamo che ci sono casi in cui ciò potrebbe non essere conveniente, ma vogliamo essere sicuri che sia proprio questo il caso. –

+0

Ad esempio, uno dei miei utenti aggiunge un nuovo progetto e desidera importare i dati degli ultimi 30 giorni da un'API esterna. Voglio trasmettere i dati alle loro partizioni temporali corrispondenti, quindi posso interrogare i dati del periodo selezionato nella mia dashboard. Sarebbe bello se potessimo selezionare uno dei campi della tabella come "riferimento partizione" per dedurre il timestamp della partizione. Penso che non possa essere fatto ora. Grazie ancora Pavan. –