2015-06-23 30 views
5

Ho uno schema per BigQuery in cui il campo Record è simile a JSON, tuttavia, le chiavi nel JSON sono dinamiche, ovvero nuove chiavi potrebbero emergere con nuovi dati ed è difficile sapere come molte chiavi in ​​totale ci sono. Secondo la mia comprensione, non è possibile utilizzare BigQuery per una tabella di questo tipo poiché lo schema del tipo di campo del record deve essere definito in modo esplicito altrimenti genera un errore.BigQuery - Schema flessibile nel campo record

L'unica altra alternativa è utilizzare la funzione JSON_EXTRACT durante l'interrogazione dei dati che analizzeranno il campo JSON (testo). C'è un altro modo in cui possiamo avere schemi nidificati dinamici in una tabella in BigQuery?

risposta

4

È possibile creare uno schema fisso per campi comuni ed è possibile impostarli come valori nulli. E una colonna come stringa di tipo può essere utilizzata per memorizzare il resto del JSON e utilizzare le funzioni JSON per richiedere dati.

Abbiamo sempre una colonna meta nella nostra tabella, che contiene ulteriori dati grezzi non strutturati come oggetto JSON.

Si prega di notare che attualmente è possibile memorizzare fino a 2 Megabyte in una colonna di stringhe, che è decente per un documento JSON.

Per semplificare il trattamento dei dati, è possibile creare viste dalle query che utilizzano JSON_EXTRACT e fare riferimento alla tabella di visualizzazione in un'altra query più semplice.

Anche nella fase di inserimento dello streaming, la tua app potrebbe denormalizzare il JSON in tabelle appropriate.

+0

Grazie per la risposta! –