Esegui query e analizza i 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 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 Bigtable da BigQuery. Questa funzionalità è utile quando vuoi unire i dati Bigtable alle tabelle BigQuery.
Questo documento fornisce una panoramica dell'esecuzione di query sui dati Bigtable con BigQuery. Prima di leggere questa pagina, devi avere 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 colonne in ogni riga.
Creazione di tabelle esterne
Prima di poter eseguire query sui dati Bigtable, tu o un amministratore della tua organizzazione dovete creare una tabella esterna, ovvero una tabella BigQuery contenente puntatori di metadati alla tabella Bigtable a cui invii le query. Per maggiori informazioni 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.
Configurazioni consigliate
Quando crei la tabella esterna, ti consigliamo di attenerti alle seguenti best practice:
Per evitare di influire sul traffico di pubblicazione delle applicazioni, utilizza il serverless computing Data Boost quando leggi i dati Bigtable con le tabelle esterne BigQuery. L'utilizzo di Data Boost è particolarmente conveniente per le query ad hoc. Per utilizzare Data Boost, specifica il profilo dell'app Data Boost quando crei la definizione della tabella esterna. Per saperne di più su Data Boost, vedi Panoramica di Bigtable Data Boost.
Nella maggior parte dei casi, quando crei una tabella esterna, imposta
readRowkeyAsString
eignoreUnspecifiedColumnFamilies
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 non selezionate vengono raggruppati in una colonna generalecolumn
.
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:
- Dalla riga di comando utilizzando
bq
, la CLI di BigQuery - Chiamate all'API BigQuery
- Una delle librerie client di BigQuery
Per scoprire come comporre ed eseguire una query, vedi Eseguire una query. Per istruzioni specifiche per Bigtable, incluse le autorizzazioni richieste e gli esempi di codice, consulta Eseguire query sui dati Bigtable.
Query programmate
Le query pianificate sono utili quando vuoi importare i dati Bigtable in BigQuery su base ricorrente. Sono utili anche per i casi d'uso che altrimenti richiederebbero la creazione di una pipeline di dati e lo streaming dei dati in BigQuery. Per istruzioni sulla gestione delle query programmate, vedi Programmare le query.
Scansioni complete delle tabelle
Se utilizzi Data Boost per leggere i dati, non devi evitare di eseguire la scansione dell'intera tabella. Se utilizzi i nodi di cui è stato eseguito il provisioning per il calcolo, invece, devi farlo. Analogamente a quando invii richieste di lettura direttamente alla tabella Bigtable, quando esegui una query sulla tabella esterna per la tabella e non utilizzi Data Boost, in genere vuoi evitare le scansioni complete della tabella. Le scansioni complete delle tabelle aumentano l'utilizzo della CPU e richiedono molto più tempo rispetto alle query selettive. Inoltre, richiedono una velocità effettiva di BigQuery maggiore.
Se la query riguarda 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 analizzata. Ecco alcuni esempi nella sintassi GoogleSQL di limitazione della 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 estrae i campi pertinenti da Bigtable per il join pianificato. Per ulteriori best practice per l'unione delle tabelle, consulta Ottimizzazione del 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 vengono sostenuti costi di rete.
Se tendi a eseguire le query durante il normale orario di lavoro, valuta la possibilità di attivare la scalabilità automatica di Bigtable in modo che il numero di nodi aumenti quando necessario e diminuisca al termine dei job. Lo scaling automatico è 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 la pagina Stima e controllo dei costi.
Limitazioni
Si applica la seguente limitazione:
- I risultati delle query che contengono dati serializzati con tipi nidificati, ad esempio i formati Protocol Buffer (protobuf) e 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 Bigtable archiviati in una tabella esterna.
- Esportare i dati da BigQuery a Bigtable.
- Creare un database di analisi in tempo reale con Bigtable e BigQuery