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 ti consentono di eseguire query su dati strutturati in datastore esterni. Per eseguire query su una tabella esterna, devi disporre delle autorizzazioni sia per la tabella esterna sia per l'origine dati esterna. Ad esempio, per eseguire query su una tabella esterna che utilizza un'origine dati in Cloud Storage, devi disporre delle seguenti autorizzazioni:
bigquery.tables.getDatabigquery.jobs.createstorage.buckets.getstorage.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 degli accessi 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 archiviata 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 ad hoc una tantum su 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 causare comportamenti imprevisti.
- Le prestazioni delle query per le tabelle esterne potrebbero essere lente rispetto alle 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. Le prestazioni di una query che include una tabella esterna dipendono dal tipo di spazio di archiviazione esterno. Ad esempio, l'esecuzione di query sui dati archiviati in Cloud Storage è più veloce rispetto all'esecuzione di query sui dati archiviati su 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 API JSON
TableDataListper recuperare dati da tabelle esterne. Per saperne di più, consultatabledata.list. Per ovviare a questo limite, puoi salvare i risultati delle query in una tabella di destinazione. Puoi quindi utilizzare il metodoTableDataListnella tabella dei risultati. - Non puoi eseguire un job BigQuery che esporta dati da una tabella esterna. Per ovviare a questo limite, puoi salvare i risultati delle query in una tabella di destinazione. Quindi, esegui un job di estrazione sulla tabella dei risultati.
- Non puoi copiare una tabella esterna.
- Non puoi fare riferimento a una tabella esterna in una query su una tabella con funzione carattere jolly.
- Le tabelle esterne non supportano il clustering. Supportano il partizionamento in modi limitati. Per maggiori dettagli, consulta Esecuzione di query su 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 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 di frequente, ti consigliamo di scrivere i risultati della query in una tabella permanente ed eseguire le query sulla tabella permanente.
- Puoi eseguire un massimo di 16 query contemporaneamente su un'origine dati esterna Bigtable.
- Un dry run di una query federata che utilizza una tabella esterna potrebbe segnalare 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 fino al completamento della query effettiva. L'esecuzione della query federata comporta un costo per l'elaborazione di questi dati.
- Non puoi utilizzare
_object_metadatacome 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 i nomi di colonna flessibili.
- BI Engine non supporta le query alle tabelle esterne.
- BigQuery non supporta Data Boost per la lettura dei dati Bigtable da BigQuery.
- BigQuery non supporta le finestre di conservazione dei dati di tipo viaggio nel tempo o fail-safe per le tabelle esterne.
Tuttavia, per le tabelle esterne Apache Iceberg, puoi utilizzare la clausola
FOR SYSTEM_TIME AS OFper accedere agli snapshot conservati nei metadati Iceberg. - Si applicano tutte le limitazioni specifiche del formato:
Considerazioni sulla località
Quando scegli una località per la tabella esterna, devi tenere conto sia della località del set di dati BigQuery sia dell'origine dati esterna.
Cloud Storage
Quando esegui query sui dati in Cloud Storage utilizzando una BigLake o 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 set di dati BigQuery deve trovarsi nella regioneus-central1(Iowa) o nella multi-regioneUS.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 multi-regioneEU.Se il tuo bucket Cloud Storage si trova nella regione
europe-west1(Belgio), il set di dati BigQuery corrispondente deve trovarsi anche nella regioneeurope-west1(Belgio) o nella multi-regioneEU. -
Se il tuo bucket Cloud Storage si trova nella doppia regione predefinita
NAM4o in una qualsiasi doppia regione configurabile che include la regioneus-central1(Iowa), il set di dati BigQuery corrispondente deve trovarsi nella regioneus-central1(Iowa) o nella multi-regioneUS.Se il tuo bucket Cloud Storage si trova nella doppia regione predefinita
EUR4o 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 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) oasia-northeast2(Osaka).Se il bucket Cloud Storage utilizza una regione a due regioni configurabile che include le regioni
australia-southeast1(Sydney) eaustralia-southeast2(Melbourne), il bucket BigQuery corrispondente deve trovarsi nella regioneaustralia-southeast1(Sydney) oaustralia-southeast2(Melbourne). -
L'utilizzo di località 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 multi-regione
US, il bucket Cloud Storage corrispondente deve trovarsi nella multi-regioneUS, nella singola regioneus-central1(Iowa) o in una regione a due regioni che includeus-central1(Iowa), come la regione a due regioniNAM4, o in una regione a due regioni 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) o in una regione a due regioni che includeeurope-west1(Belgio) oeurope-west4(Paesi Bassi), come la regione a due regioniEUR4, o in una regione a due regioni configurabile che includeeurope-west1oeurope-west4.
Per saperne di più 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 di BigQuery, l'istanza Bigtable deve trovarsi nella stessa località del set di dati BigQuery:
- Singola regione: se il set di dati BigQuery si trova nella località regionale Belgio (
europe-west1), l'istanza Bigtable corrispondente deve trovarsi nella regione Belgio. - Multiregione: poiché le prestazioni delle query esterne dipendono da una latenza minima e da una larghezza di banda di rete ottimale, l'utilizzo di località di set di dati multiregionali non è consigliato per le tabelle esterne su Bigtable.
Per saperne di più sulle località Bigtable supportate, consulta Località Bigtable.
Google Drive
Le considerazioni sulla località non si applicano alle origini dati esterne di Google Drive.
Spostamento dei dati tra località
Per spostare manualmente un set di dati da una località a un'altra, segui questi passaggi:
-
Esporta i dati dalle tabelle BigQuery in un bucket Cloud Storage.
Non sono previsti addebiti per l'esportazione dei dati da BigQuery, ma vengono addebitati costi per l'archiviazione dei dati esportati in Cloud Storage. Le esportazioni BigQuery sono soggette ai limiti per i job di estrazione.
-
Copia o sposta i dati dal bucket Cloud Storage di esportazione a un nuovo bucket creato nella località di destinazione. Ad esempio, se stai spostando i dati dalla multiregione
USalla regione di Tokyoasia-northeast1, trasferirai i dati in un bucket che hai creato a Tokyo. Per informazioni sul trasferimento di oggetti Cloud Storage, consulta Copia, ridenomina e sposta gli oggetti nella documentazione di Cloud Storage.Il trasferimento di dati tra regioni comporta tariffe per il traffico di rete in uscita in Cloud Storage.
-
Crea un nuovo set di dati BigQuery nella nuova località, quindi carica i dati dal bucket Cloud Storage nel nuovo set di dati.
Non ti verrà addebitato alcun costo per il caricamento dei dati in BigQuery, ma ti verranno addebitati i costi per l'archiviazione dei dati in Cloud Storage fino a quando non elimini i dati o il bucket. Ti verranno addebitati anche i costi per l'archiviazione dei dati in BigQuery dopo il caricamento. Il caricamento dei dati in BigQuery è soggetto ai limiti dei job di caricamento.
Puoi anche utilizzare Managed Service for Apache Airflow per spostare e copiare set di dati di grandi dimensioni in modo programmatico.
Per saperne di più sull'utilizzo di Cloud Storage per archiviare e spostare set di dati di grandi dimensioni, consulta Utilizza Cloud Storage con i big data.
Ottimizza le query sulle tabelle esterne di Cloud Storage
Per ottimizzare le prestazioni e potenzialmente ridurre i costi durante l'esecuzione di query sui dati in Cloud Storage con tabelle esterne, valuta la possibilità di attivare Rapid Cache.
Rapid Cache fornisce una cache di lettura a livello di zona basata su SSD per i tuoi bucket Cloud Storage. Se abilitata, BigQuery utilizza Rapid Cache per gestire le richieste di lettura degli oggetti, offrendoti:
- Prestazioni delle query accelerate: letture dei dati più rapide da Cloud Storage per i workload BigQuery.
- Costi di trasferimento dei dati di rete ridotti: tariffe di trasferimento dei dati ridotte per i workload BigQuery supportati da bucket multiregionali. I dati letti da una cache comportano costi di networking inferiori rispetto ai dati letti direttamente da un bucket multiregionale.
BigQuery è un servizio regionale, ma le sue risorse di computing sottostanti possono spostarsi tra le zone per il bilanciamento del carico, pertanto ti consigliamo di attivare Rapid Cache in tutte le zone della regione in cui viene eseguito il tuo workload BigQuery. In questo modo, un'istanza di cache è disponibile indipendentemente dalla zona utilizzata dal computing di BigQuery. Per saperne di più, consulta i prezzi di Rapid Cache.
Per determinare se Rapid Cache è adatto alle tue esigenze, ti consigliamo di utilizzare il motore per suggerimenti di Rapid Cache. Il motore per suggerimenti di Rapid Cache fornisce suggerimenti e insight per la creazione di cache in coppie bucket-zona analizzando l'utilizzo e lo spazio di archiviazione dei dati.
Prezzi
Quando esegui una query su una tabella esterna da BigQuery, ti vengono addebitati i costi per 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 BigQuery Capacity (per ora slot).
Se i dati sono archiviati in ORC o Parquet su Cloud Storage, consulta Calcolo delle dimensioni dei dati.
Ti viene inoltre addebitato il costo per l'archiviazione dei dati e per le risorse utilizzate dall'applicazione di origine, in base alle linee guida sui prezzi dell'applicazione:
Per informazioni sui prezzi di Cloud Storage, consulta Prezzi di Cloud Storage. Le tariffe di Cloud Storage potrebbero includere quanto segue:
- Costi di archiviazione dei dati.
- Costi di recupero dei dati per l'accesso ai dati nelle classi di archiviazione Nearline, Coldline e Archive.
- Costi di utilizzo della rete per i dati letti in regioni diverse.
- Costi per il trattamento dei dati. Tuttavia, non ti vengono addebitate le chiamate API effettuate da BigQuery per tuo conto.
Per informazioni sui prezzi di Bigtable, consulta Prezzi.
Per informazioni sui prezzi di Drive, consulta Prezzi.
Passaggi successivi
- Scopri come creare una tabella esterna Bigtable.
- Scopri come creare una tabella esterna di Cloud Storage.
- Scopri come creare una tabella esterna di Drive.
- Scopri come pianificare ed eseguire controlli della qualità dei dati con Knowledge Catalog.