Introduzione alle tabelle esterne
Questo documento descrive come utilizzare i dati archiviati al di fuori di BigQuery in tabelle esterne. Per lavorare con origini dati esterne, puoi anche utilizzare i set di dati esterni.
Le tabelle esterne diverse da BigLake ti consentono di eseguire query sui dati strutturati in datastore esterni. Per eseguire query su una tabella esterna non BigLake, devi disporre delle autorizzazioni sia per la tabella esterna sia per l'origine dati esterna. Ad esempio, per eseguire query su una tabella esterna non BigLake che utilizza un'origine dati in Cloud Storage, devi disporre delle seguenti autorizzazioni:
bigquery.tables.getData
bigquery.jobs.create
storage.buckets.get
storage.objects.get
Datastore supportati
Puoi utilizzare tabelle esterne diverse da BigLake con i seguenti datastore:
Supporto delle tabelle temporanee
Puoi eseguire query su un'origine dati esterna in BigQuery utilizzando una tabella permanente o una tabella temporanea. Una tabella permanente è una tabella creata in un set di dati e collegata all'origine dati esterna. Poiché la tabella è permanente, puoi utilizzare i controlli dell'accesso per condividerla con altri utenti che hanno accesso anche all'origine dati esterna sottostante e puoi eseguire query sulla tabella in qualsiasi momento.
Quando esegui una query su un'origine dati esterna utilizzando una tabella temporanea, invii un comando che include una query e crea una tabella non permanente collegata all'origine dati esterna. Quando utilizzi una tabella temporanea, non crei una tabella in uno dei tuoi set di dati BigQuery. Poiché la tabella non viene memorizzata in modo permanente in un set di dati, non può essere condivisa con altri. Eseguire query su un'origine dati esterna utilizzando una tabella temporanea è utile per query una tantum e ad hoc sui dati esterni o per i processi di estrazione, trasformazione e caricamento (ETL).
Più file di origine
Se crei una tabella esterna non BigLake basata su Cloud Storage, puoi utilizzare più origini dati esterne, a condizione che abbiano lo stesso schema. Questa operazione non è supportata per le tabelle esterne non BigLake basate su Bigtable o Google Drive.
Limitazioni
Alle tabelle esterne si applicano le seguenti limitazioni:
- BigQuery non garantisce la coerenza dei dati per le tabelle di dati esterne. Le modifiche ai dati sottostanti durante l'esecuzione di una query possono provocare un comportamento imprevisto.
- Le prestazioni delle query per le tabelle esterne potrebbero essere lente rispetto all'esecuzione di query sui dati di una tabella BigQuery standard. Se la velocità delle query è una priorità, carica i dati in BigQuery anziché configurare un'origine dati esterna. Il rendimento di una query che include una tabella esterna dipende dal tipo di archiviazione esterno. Ad esempio, l'esecuzione di query sui dati archiviati in Cloud Storage è più rapida rispetto all'esecuzione di query sui dati archiviati in Google Drive. In generale, le prestazioni delle query per una tabella esterna dovrebbero essere equivalenti alla lettura dei dati direttamente dall'origine dati.
- Non puoi modificare le tabelle di dati esterni utilizzando DML o altri metodi. Le tabelle esterne sono di sola lettura per BigQuery.
- Non puoi utilizzare il metodo dell'API JSON
TableDataList
per recuperare i dati dalle tabelle esterne. Per ulteriori informazioni, consultatabledata.list
. Per ovviare a questa limitazione, puoi salvare i risultati della query in una tabella di destinazione. Puoi quindi utilizzare il metodoTableDataList
nella tabella dei risultati. - Non puoi eseguire un job BigQuery che esporta i dati da una tabella esterna. Per ovviare a questa limitazione, puoi salvare i risultati della query in una tabella di destinazione. Quindi, esegui un job di esportazione nella tabella dei risultati.
- Non puoi fare riferimento a una tabella esterna in una query sulla tabella con caratteri jolly.
- Le tabelle esterne non supportano il clustering. Supportano il partizionamento in modi limitati. Per maggiori dettagli, consulta Esecuzione di query sui dati partizionati esternamente.
- Quando esegui una query su un'origine dati esterna diversa da Cloud Storage, i risultati non vengono memorizzati nella cache. (Le query GoogleSQL su Cloud Storage sono supportate). Ti viene addebitato un importo per ogni query eseguita su una tabella esterna, anche se emetti la stessa query più volte. Se devi eseguire ripetutamente una query su una tabella esterna che non cambia di frequente, ti consigliamo di scrivere i risultati della query in una tabella permanente ed eseguire le query sulla tabella permanente.
- Puoi eseguire al massimo 16 query in parallelo su un'origine dati esterna di Bigtable.
- Un'esecuzione di prova di una query federata che utilizza una tabella esterna potrebbe indicare un limite inferiore di 0 byte di dati, anche se vengono restituite righe. Questo accade perché la quantità di dati elaborati dalla tabella esterna non può essere determinata fino al completamento della query effettiva. L'esecuzione della query federata comporta un costo per l'elaborazione di questi dati.
- Non puoi utilizzare
_object_metadata
come nome di colonna nelle tabelle esterne. È riservato per uso interno. - BigQuery non supporta la visualizzazione delle statistiche di archiviazione delle tabelle per le tabelle esterne.
- Le tabelle esterne non supportano nomi di colonna flessibili.
Considerazioni sulla località
Quando scegli una posizione per la tabella esterna, devi prendere in considerazione sia la posizione del set di dati BigQuery sia l'origine dati esterna.
Cloud Storage
Quando esegui query sui dati in Cloud Storage utilizzando un BigLake o una tabella esterna non BigLake, il bucket deve essere co-allocato con il set di dati BigQuery che contiene la definizione della tabella esterna. Ad esempio:
-
Se il bucket Cloud Storage si trova nella regione
us-central1
(Iowa), il set di dati BigQuery deve trovarsi nella regioneus-central1
(Iowa) o nella regione multiplaUS
.Se il bucket Cloud Storage si trova nella regione
europe-west4
(Paesi Bassi), il set di dati BigQuery deve trovarsi nella regioneeurope-west4
(Paesi Bassi) o nella regione multiplaEU
.Se il bucket Cloud Storage si trova nella regione
europe-west1
(Belgio), anche il set di dati BigQuery corrispondente deve trovarsi nella regioneeurope-west1
(Belgio). -
Se il bucket Cloud Storage si trova nella doppia regione predefinita
NAM4
o in qualsiasi doppia regione configurabile che include la regioneus-central1
(Iowa), il set di dati BigQuery corrispondente deve trovarsi nella regioneus-central1
(Iowa) o nella regione multiplaUS
.Se il bucket Cloud Storage si trova nella doppia regione predefinita
EUR4
o in qualsiasi doppia regione configurabile che include la regioneeurope-west4
(Paesi Bassi), il set di dati BigQuery corrispondente deve trovarsi nella regioneeurope-west4
(Paesi Bassi) o nella regione multiplaEU
.Se il bucket Cloud Storage si trova nella regione duale predefinita
ASIA1
, il set di dati BigQuery corrispondente deve trovarsi nella regioneasia-northeast1
(Tokyo) o nella regioneasia-northeast2
(Osaka).Se il bucket Cloud Storage utilizza una doppia regione configurabile che include le regioni
australia-southeast1
(Sydney) eaustralia-southeast2
(Melbourne), il bucket BigQuery corrispondente deve trovarsi nella regioneaustralia-southeast1
(Sydney) o nella regioneaustralia-southeast2
(Melbourne). -
L'utilizzo di posizioni dei set di dati multiregione con bucket Cloud Storage multiregione non è consigliato per le tabelle esterne, perché le prestazioni delle query esterne dipendono da una latenza minima e da una larghezza di banda di rete ottimale.
Se il set di dati BigQuery si trova nella multiregione
US
, il corrispondente bucket Cloud Storage deve trovarsi nella multiregioneUS
, in una regione doppia che includeus-central1
(Iowa), come la regione doppiaNAM4
o in una regione doppia configurabile che includeus-central1
.Se il set di dati BigQuery si trova nella multiregione
EU
, il corrispondente bucket Cloud Storage deve trovarsi nella multiregioneEU
, in una regione doppia che includeeurope-west4
(Paesi Bassi), come la regione doppiaEUR4
o in una regione doppia configurabile che includeeurope-west4
.
Per ulteriori informazioni sulle località di Cloud Storage supportate, consulta Località dei bucket nella documentazione di Cloud Storage.
Bigtable
Quando esegui query sui dati in Bigtable tramite una tabella esterna BigQuery, la tua istanza Bigtable deve trovarsi nella stessa posizione del set di dati BigQuery:
- Regione singola: se il set di dati BigQuery si trova nella località regionale del Belgio
(
europe-west1
), l'istanza Bigtable corrispondente deve trovarsi nella regione del Belgio. - Più regioni: poiché le prestazioni delle query esterne dipendono da una latenza minima e da una larghezza di banda di rete ottimale, l'utilizzo di posizioni dei set di dati in più regioni non è consigliato per le tabelle esterne su Bigtable.
Per ulteriori informazioni sulle località Bigtable supportate, consulta Località Bigtable.
Google Drive
I fattori di località non si applicano alle origini dati esterne di Google Drive.
Gestione dati
Sviluppare un piano di gestione dei dati:- Se scegli una risorsa di archiviazione regionale, come un set di dati BigQuery o un bucket Cloud Storage, sviluppa un piano per la gestione geografica dei dati.
Spostare i dati tra località
Per spostare manualmente un set di dati da una posizione all'altra:
-
Esportare i dati dalle tabelle BigQuery in un bucket Cloud Storage nella stessa posizione del set di dati o in una posizione contenuta nella posizione del set di dati. Ad esempio, se il set di dati si trova nella località
EU
multiregione, puoi esportare i dati nella localitàeurope-west1
Belgio, che fa parte dell'UE.Non sono previsti costi per l'esportazione dei dati da BigQuery, ma sono previsti costi per l'archiviazione dei dati esportati in Cloud Storage. Le esportazioni di BigQuery sono soggette ai limiti relativi ai job di esportazione.
-
Copia o sposta i dati dal bucket Cloud Storage di esportazione in un nuovo bucket creato nella posizione di destinazione. Ad esempio, se sposti i dati dalla regione multipla
US
alla regione di Tokyoasia-northeast1
, li trasferisci in un bucket creato a Tokyo. Per informazioni sul trasferimento degli oggetti Cloud Storage, consulta Copiare, rinominare e spostare gli oggetti nella documentazione di Cloud Storage.Il trasferimento di dati tra regioni comporta addebiti per il traffico in uscita dalla rete in Cloud Storage.
-
Crea un nuovo set di dati BigQuery nella nuova posizione, quindi carica i dati dal bucket Cloud Storage nel nuovo set di dati.
Non ti viene addebitato alcun costo per il caricamento dei dati in BigQuery, ma ti verranno addebitati costi per l'archiviazione dei dati in Cloud Storage fino a quando non eliminerai i dati o il bucket. Ti viene inoltre addebitato il costo di archiviazione dei dati in BigQuery dopo il caricamento. Il caricamento dei dati in BigQuery è soggetto ai limiti dei job di caricamento.
Puoi anche utilizzare Cloud Composer per spostare e copiare set di dati di grandi dimensioni in modo programmatico.
Per ulteriori informazioni sull'utilizzo di Cloud Storage per archiviare e spostare set di dati di grandi dimensioni, consulta Utilizzare Cloud Storage con i big data.
Prezzi
Quando esegui una query su una tabella esterna da BigQuery, ti viene addebitato l'esecuzione della query e i byte letti applicabili se utilizzi i prezzi di BigQuery on demand (per TiB) o il consumo di slot se utilizzi i prezzi di capacità di BigQuery (per ora di slot).
Se i tuoi dati sono archiviati in formato ORC o Parquet su Cloud Storage, consulta Calcolo delle dimensioni dei dati.
Ti viene inoltre addebitato il costo per l'archiviazione dei dati e di eventuali risorse utilizzate dall'applicazione di origine, in base alle linee guida sui prezzi dell'applicazione:
- Per informazioni sui prezzi di Cloud Storage, consulta la pagina Prezzi di Cloud Storage.
- Per informazioni sui prezzi di Bigtable, consulta Prezzi.
- Per informazioni sui prezzi di Drive, vedi Prezzi.
Passaggi successivi
- Scopri come creare una tabella esterna Bigtable.
- Scopri come creare una tabella esterna Cloud Storage.
- Scopri come creare una tabella esterna di Drive.
- Scopri come pianificare ed eseguire controlli della qualità dei dati con Dataplex.