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 di 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 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
Ti consigliamo di seguire le seguenti best practice quando crei la tabella esterna:
Per evitare di influire sul traffico di pubblicazione delle applicazioni, utilizza il serverless computing di Data Boost (anteprima) 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 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 colonnacolumn
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 su Bigtable, incluse le autorizzazioni richieste e gli 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 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.
Scansioni complete delle tabelle
Se utilizzi il potenziamento dei dati per leggere i dati, non devi evitare di eseguire la scansione dell'intera tabella. Tuttavia, se utilizzi i nodi di cui è stato eseguito il provisioning per il calcolo, devi farlo. In genere, quando invii richieste di lettura direttamente alla tabella Bigtable, quando esegui query sulla tabella esterna per la tabella e non utilizzi Data Boost, è consigliabile evitare le scansioni complete della tabella. Le ricerche complete delle tabelle aumentano l'utilizzo della CPU e richiedono molto più tempo rispetto alle query selettive. Inoltre, richiedono una maggiore velocità effettiva 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 sottoposta a scansione. 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 applica la seguente limitazione:
- 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 Google Cloud console.
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.
- Creare un database di analisi in tempo reale con Bigtable e BigQuery