Query e analisi di dati Bigtable con BigQuery

BigQuery è un data warehouse gestito che può aiutarti a eseguire query e analizzare i dati Bigtable utilizzando query SQL. BigQuery è utile per data analyst, data engineer, data scientist o chiunque voglia utilizzare i dati Bigtable per rispondere a domande aziendali.

BigQuery consente di eseguire query sui dati di Bigtable da BigQuery. Questa funzionalità è utile quando vuoi unire i dati di Bigtable alle tabelle BigQuery.

Questo documento fornisce una panoramica dell'esecuzione di query sui dati di Bigtable con BigQuery. Prima di leggere questa pagina, dovresti acquisire familiarità con la panoramica di Bigtable e la panoramica di BigQuery

L'utilizzo di BigQuery per eseguire query su una tabella Bigtable è ideale per le tabelle che hanno le stesse famiglie di colonne e gli stessi qualificatori di colonna in ogni riga.

Creazione della tabella esterna

Prima di poter eseguire query sui dati Bigtable, tu o un amministratore della tua organizzazione dovete creare una tabella esterna, cioè una tabella BigQuery contenente i puntatori di metadati alla tabella Bigtable a cui invii le query. Per saperne di più sulle tabelle esterne, consulta Introduzione alle origini dati esterne.

Devi creare la tabella esterna nella stessa regione della tabella Bigtable. Ciò significa, ad esempio, che se la tabella si trova in un'istanza con cluster in europe-central2-a (Varsavia), europe-west1-c (Belgio) e asia-east1-a (Tokyo), devi creare la tabella esterna a Varsavia, Belgio o Tokyo.

Nella maggior parte dei casi, quando crei una tabella esterna, imposta readRowkeyAsString e ignoreUnspecifiedColumnFamilies su true.

Quando ignoreUnspecifiedColumnFamilies è true, quando crei una definizione di tabella che include solo alcune colonne in una famiglia di colonne, solo le colonne selezionate vengono promosse come colonne nella tabella esterna. I dati nelle colonne deselezionate sono raggruppati in una colonna column generale.

Per creare una tabella esterna, segui le istruzioni in Creare una tabella esterna Bigtable.

Esegui query sui dati nella tabella esterna

Dopo aver creato una tabella esterna per la tua tabella Bigtable, puoi inviarle query SQL utilizzando uno dei seguenti metodi:

Per scoprire come scrivere ed eseguire una query, consulta Esecuzione di una query. Per le istruzioni specifiche per Bigtable, tra cui le autorizzazioni richieste ed esempi di codice, consulta Eseguire query sui dati di Bigtable.

Query programmate

Le query pianificate sono utili quando vuoi importare i dati di Bigtable in BigQuery su base ricorrente. Sono utili anche per casi d'uso che altrimenti potrebbero richiedere la creazione di una pipeline di dati e la trasmissione di flussi di dati a BigQuery. Per istruzioni sulla gestione delle query pianificate, consulta Programmazione delle query.

Evita scansioni complete delle tabelle

Analogamente a quando invii richieste di lettura direttamente alla tabella Bigtable, quando esegui una query sulla tabella esterna per la tabella, in genere vuoi evitare scansioni complete della tabella. Le analisi complete delle tabelle aumentano l'utilizzo della CPU e richiedono molto più tempo rispetto alle query selettive. Richiedono inoltre una maggiore velocità effettiva di BigQuery.

Se la query riguarda tutte le righe, attiva una scansione completa della tabella. Se invece limiti la query e richiedi un intervallo di righe o righe non contigue specificate, l'intera tabella non viene analizzata. Di seguito sono riportati alcuni esempi di sintassi di GoogleSQL per la limitazione della query:

  • WHERE rowkey = "abc123"
  • WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
  • WHERE rowkey > 999999 (se leggi la chiave di riga come una stringa)

Unioni

Se prevedi di utilizzare un join per analizzare i dati della tabella Bigtable in combinazione con i dati di un'altra origine, devi creare una sottoquery che estrae i campi pertinenti da Bigtable per il join pianificato. Per altre best practice sull'unione di tabelle, consulta Ottimizzare il calcolo delle query.

Costi

Quando crei una tabella esterna ed esegui una query, ti vengono addebitati i costi di BigQuery e un aumento del numero di nodi Bigtable necessari per gestire il traffico. Poiché la tabella esterna si trova nella stessa regione della tabella Bigtable, non sono previsti costi di rete.

Se tendi a eseguire le query durante il normale orario lavorativo, valuta la possibilità di abilitare la scalabilità automatica di Bigtable in modo che il numero di nodi aumenti a seconda delle necessità e diminuisca quando i job sono completati. La scalabilità automatica è una tattica efficace anche se esegui query pianificate che non hanno scadenze precise.

Un altro modo per limitare i costi è evitare una scansione completa della tabella.

Per ulteriori informazioni sull'ottimizzazione dei costi per BigQuery, consulta Stima e controllo dei costi.

Limitazioni

Si applicano le seguenti limitazioni:

  • Non puoi usare BigQuery per eseguire query sui dati di Bigtable archiviati in formato JSON.
  • I risultati delle query che contengono dati serializzati con tipi nidificati, ad esempio i formati di buffer di protocollo (protobufs) e Avro, potrebbero essere visualizzati in modo errato o difficili da leggere nella console Google Cloud.

Passaggi successivi