Esegui query e analizza i dati di Bigtable con BigQuery
BigQuery è un data warehouse gestito che può aiutarti a eseguire query e analizzare i dati di Bigtable utilizzando query SQL. BigQuery è utile per analisti di dati, data engineer, data scientist o chiunque voglia utilizzare i dati Bigtable per rispondere a domande aziendali.
BigQuery ti 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 delle query sui dati di Bigtable con BigQuery. Prima di leggere questa pagina, devi conoscere 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 di tabelle esterne
Prima di poter eseguire query sui dati di Bigtable, tu o un amministratore della tua organizzazione dovete creare una tabella esterna, ovvero una tabella BigQuery contenente puntatori ai metadati della 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, in Belgio o a 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 di una famiglia di colonne, solo le colonne selezionate vengono promosse come colonne nella tabella esterna. I dati nelle colonne non selezionate vengono raggruppati in una colonna column
generale.
Per creare la tabella esterna, segui le istruzioni riportate in Creare una tabella esterna Bigtable.
Esegui query sui dati nella tabella esterna
Dopo aver creato una tabella esterna per la tabella Bigtable, puoi inviare query SQL utilizzando uno dei seguenti metodi:
- Nella riga di comando utilizzando
bq
, l'interfaccia a riga di comando di BigQuery - Chiamate all'API BigQuery
- Qualsiasi libreria client di BigQuery
Per scoprire come comporre ed eseguire una query, consulta Eseguire una query. Per istruzioni specifiche per Bigtable, incluse le autorizzazioni richieste e i sample 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 i casi d'uso che altrimenti potrebbero richiedere la creazione di una pipeline di dati e lo streaming dei dati in BigQuery. Per istruzioni su come gestire le query programmate, consulta Pianificare le query.
Evita le scansioni complete delle tabelle
Come quando invii richieste di lettura direttamente alla tabella Bigtable, in genere è consigliabile evitare le scansioni complete della tabella quando esegui query sulla tabella esterna. Le ricerche complete delle tabelle aumentano l'utilizzo della CPU e richiedono molto più tempo delle query selettive. Inoltre, richiedono una maggiore Throughput di BigQuery.
Se la query coinvolge tutte le righe, viene attivata una scansione completa della tabella. D'altra parte, se limiti la query e richiedi un intervallo di righe o righe non contigue specificate, l'intera tabella non viene scansionata. Ecco alcuni esempi di sintassi GoogleSQL per limitare la query:
WHERE rowkey = "abc123"
WHERE rowkey BETWEEN "abc123" PRECEDING AND "abc999" FOLLOWING
WHERE rowkey > 999999
(se leggi la chiave di riga come stringa)
Unioni
Se prevedi di utilizzare un join per analizzare i dati della tabella Bigtable insieme ai dati di un'altra origine, devi creare una sottoquery che estragga i campi pertinenti da Bigtable per il join pianificato. Per altre best practice per l'unione di tabelle, consulta Ottimizzare il calcolo delle query.
Costi
Quando crei una tabella esterna ed esegui query su di essa, 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 vengono sostenuti costi di rete.
Se tendi a eseguire le query durante l'orario di apertura normale, ti consigliamo di attivare la scalabilità automatica di Bigtable in modo che il numero di nodi aumenti quando necessario e diminuisca al termine dei job. La scalabilità automatica è una tattica efficace anche se esegui query pianificate che non hanno scadenze rigide.
Un altro modo per limitare i costi è evitare una scansione completa della tabella.
Per ulteriori informazioni sull'ottimizzazione dei costi per BigQuery, consulta Stimare e controllare i costi.
Limitazioni
Si applicano le seguenti limitazioni:
- Non puoi utilizzare BigQuery per eseguire query sui dati Bigtable archiviati in formato JSON.
- I risultati delle query che contengono dati serializzati con tipi nidificati, come i buffer di protocollo (protobuf) e i formati Avro, potrebbero essere visualizzati in modo errato o essere difficili da leggere nella console Google Cloud.
Passaggi successivi
- Scopri la differenza tra tabelle esterne e query federate.
- Crea una tabella esterna Bigtable.
- Esegui query sui dati di Bigtable archiviati in una tabella esterna.
- Esportare i dati da BigQuery in Bigtable.