Introduzione alle tabelle esterne
Questo documento descrive come lavorare con i dati archiviati al di fuori di BigQuery nelle tabelle esterne. Per lavorare con origini dati esterne, puoi utilizzare anche i set di dati esterni.
Le tabelle esterne non BigLake consentono di eseguire query su 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 non 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 condividere la tabella con altri utenti che hanno anche accesso 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 è archiviata in modo permanente in un set di dati, non può essere condivisa con altri. L'esecuzione di query su un'origine dati esterna utilizzando una tabella temporanea è utile per query ad hoc una tantum sui dati esterni o per 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 esterni. Le modifiche ai dati sottostanti durante l'esecuzione di una query possono comportare un comportamento imprevisto.
- Le prestazioni delle query per le tabelle esterne potrebbero essere lente rispetto all'esecuzione di query sui dati in 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 esterna. Ad esempio, l'esecuzione di query sui dati archiviati in Cloud Storage è più veloce dell'esecuzione di query sui dati archiviati in Google Drive. In generale, le prestazioni delle query per una tabella esterna devono 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, veditabledata.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 dati da una tabella esterna. Per ovviare a questa limitazione, puoi salvare i risultati della query in una tabella di destinazione. Poi esegui un job di esportazione sulla tabella dei risultati.
- Non puoi copiare una tabella esterna.
- Non puoi fare riferimento a una tabella esterna in una query con caratteri jolly.
- Le tabelle esterne non supportano il clustering. Supportano il partizionamento in modi limitati. Per i dettagli, vedi 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. Sono supportate le query GoogleSQL su Cloud Storage. Ti viene addebitato un importo per ogni query su una tabella esterna, anche se esegui la stessa query più volte. Se devi eseguire ripetutamente una query su una tabella esterna che non cambia spesso, valuta la possibilità 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.
- Una simulazione di una query federata che utilizza una tabella esterna potrebbe restituire un limite inferiore di 0 byte di dati, anche se vengono restituite righe. Questo perché la quantità di dati elaborati dalla tabella esterna non può essere determinata finché la query effettiva non viene completata. 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 sullo spazio di archiviazione delle tabelle esterne.
- Le tabelle esterne non supportano nomi delle colonne flessibili.
- BI Engine non supporta le query alle tabelle esterne.
- BigQuery non supporta Data Boost per Spanner per la lettura dei dati Bigtable da BigQuery.
- BigQuery non supporta le finestre di conservazione dei dati time travel o fail-safeper le tabelle esterne.
- Si applicano tutte le limitazioni specifiche del formato:
Considerazioni sulla posizione
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 una BigLake o una tabella esterna non BigLake, il bucket deve essere collocato insieme al set di dati BigQuery che contiene la definizione della tabella esterna. Ad esempio:
-
Se il tuo bucket Cloud Storage si trova nella regione
us-central1
(Iowa), il tuo set di dati BigQuery deve trovarsi nella regioneus-central1
(Iowa) o nella regione multiregionaleUS
.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 multiregionaleEU
.Se il tuo bucket Cloud Storage si trova nella regione
europe-west1
(Belgio), anche il set di dati BigQuery corrispondente deve trovarsi nella regioneeurope-west1
(Belgio) o nella regione multiregionaleEU
. -
Se il bucket Cloud Storage si trova nella doppia regione predefinita
NAM4
o in qualsiasi doppia regione configurabile che includa la regioneus-central1
(Iowa), il set di dati BigQuery corrispondente deve trovarsi nella regioneus-central1
(Iowa) o nella multi-regioneUS
.Se il bucket Cloud Storage si trova nella
EUR4
doppia regione predefinita o in qualsiasi doppia regione configurabile che includa la regioneeurope-west4
(Paesi Bassi), il set di dati BigQuery corrispondente deve trovarsi nella regioneeurope-west4
(Paesi Bassi) o nella multiregioneEU
.Se il bucket Cloud Storage si trova nella doppia regione 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 la regione
australia-southeast1
(Sydney) e la regioneaustralia-southeast2
(Melbourne), il bucket BigQuery corrispondente deve trovarsi nella regioneaustralia-southeast1
(Sydney) oaustralia-southeast2
(Melbourne). -
L'utilizzo di posizioni dei set di dati multiregionali con bucket Cloud Storage multiregionali 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 bucket Cloud Storage corrispondente deve trovarsi nella multiregioneUS
, nella singola regioneus-central1
(Iowa) o in una doppia regione che includeus-central1
(Iowa), come la doppia regioneNAM4
, o in una doppia regione configurabile che includeus-central1
.Se il set di dati BigQuery si trova nella multiregione
EU
, il bucket Cloud Storage corrispondente deve trovarsi nella multiregioneEU
, nella singola regioneeurope-west1
(Belgio) oeurope-west4
(Paesi Bassi), oppure in una doppia regione che includeeurope-west1
(Belgio) oeurope-west4
(Paesi Bassi), come la doppia regioneEUR4
o in una doppia regione configurabile che includeeurope-west1
oeurope-west4
.
Per ulteriori informazioni sulle località 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, l'istanza Bigtable deve trovarsi nella stessa località del set di dati BigQuery:
- Singola regione: se il tuo set di dati BigQuery si trova nella località regionale Belgio (
europe-west1
), l'istanza Bigtable corrispondente deve trovarsi nella regione Belgio. - Multiregionale: poiché le prestazioni delle query esterne dipendono dalla latenza minima e dalla larghezza di banda di rete ottimale, l'utilizzo di posizioni dei set di dati multiregionali non è consigliato per le tabelle esterne su Bigtable.
Per ulteriori informazioni sulle località Bigtable supportate, consulta Località Bigtable.
Google Drive
Le considerazioni sulla posizione non si applicano alle origini dati esterne di Google Drive.
Spostamento di dati tra località
Per spostare manualmente un set di dati da una posizione all'altra:
-
Esporta i dati dalle tabelle BigQuery a un bucket Cloud Storage.
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 BigQuery sono soggette ai limiti dei job di esportazione.
-
Copia o sposta i dati dal bucket Cloud Storage di esportazione in un nuovo bucket creato nella località di destinazione. Ad esempio, se sposti i dati dalla regione multiregionale
US
alla regione di Tokyoasia-northeast1
, devi trasferirli in un bucket che hai creato a Tokyo. Per informazioni sul trasferimento degli oggetti Cloud Storage, consulta Copiare, rinominare e spostare oggetti nella documentazione di Cloud Storage.Il trasferimento di dati tra regioni comporta costi 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 dovrai sostenere costi per l'archiviazione dei dati in Cloud Storage finché non li elimini o non elimini il bucket. Ti vengono addebitati anche i costi 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 grandi set di dati in modo programmatico.
Per ulteriori informazioni sull'utilizzo di Cloud Storage per archiviare e spostare set di dati di grandi dimensioni, consulta Utilizzo di Cloud Storage con i big data.
Prezzi
Quando esegui una query su una tabella esterna da BigQuery, ti viene addebitato il costo dell'esecuzione della query e dei byte letti applicabili se utilizzi i prezzi on demand di BigQuery (per TiB) o il consumo di slot se utilizzi i prezzi della capacità 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 addebitato anche il costo di archiviazione dei dati e delle risorse utilizzate dall'applicazione di origine, in base alle linee guida per i prezzi dell'applicazione:
- Per informazioni sui prezzi di Cloud Storage, consulta la pagina Prezzi di Cloud Storage.
- Per informazioni sui prezzi di Bigtable, consulta la sezione Prezzi.
- Per informazioni sui prezzi di Drive, consulta la sezione 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 Universal Catalog.