Introduzione alle tabelle esterne
Questo documento descrive come lavorare con i dati archiviati al di fuori di BigQuery in tabelle esterne. Per lavorare con origini dati esterne, puoi anche utilizzare Set di dati esterni.
Le tabelle esterne non BigLake consentono di eseguire query su dati strutturati in datastore esterni. Per eseguire query su un oggetto esterno non BigLake devi disporre delle autorizzazioni sia per la tabella esterna che per un'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 temporaneo delle tabelle
Puoi eseguire query su un'origine dati esterna in BigQuery utilizzando una tabella permanente o tabella temporanea. Una tabella permanente è una tabella creata in un set di dati e collegata al tuo un'origine dati esterna. Poiché la tabella è permanente, puoi utilizzare controlli di accesso per condividere con altri utenti che hanno anche accesso all'origine dati esterna sottostante, nonché eseguire query 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 ne crei una in uno dei set di dati BigQuery. Poiché la tabella non è memorizzata 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 una tantum e ad hoc 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
Le seguenti limitazioni si applicano alle tabelle esterne:
- 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 causare comportamenti imprevisti.
- Le prestazioni delle query per le tabelle esterne potrebbero essere lente rispetto alle query in una tabella BigQuery standard. Se la velocità delle query è la priorità, per caricare 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, eseguire query sui dati archiviati in Cloud Storage è più veloce a eseguire 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 dell'API JSON
TableDataList
per recuperare i dati dalle tabelle esterne. Per ulteriori informazioni, veditabledata.list
Per aggirare questa limitazione, puoi salvare i risultati della query in una destinazione. tabella. In seguito, potrai utilizzare il metodoTableDataList
nella tabella dei risultati. - Non puoi eseguire un job BigQuery che esporta i dati da una tabella esterna. Per aggirare questa limitazione, puoi salvare i risultati della query in una destinazione. tabella. 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 modo limitato. 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 sono memorizzati nella cache. (Le query GoogleSQL su Cloud Storage sono supportate). Ti viene addebitata ogni query in base a una tabella esterna, anche se riscontri un problema 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.
- Potrebbe essere eseguito un dry run di una query federata che utilizza una tabella esterna segnalerà un limite inferiore di 0 byte di dati, anche se vengono restituite delle righe. Questo è perché la quantità di dati elaborati dalla tabella esterna non può determinato 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. È riservati 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 località per i tuoi dati, tieni presente quanto segue:
Cloud Storage
Puoi interagire con i dati di Cloud Storage utilizzando BigQuery nei seguenti modi:
- Eseguire query sui dati di Cloud Storage utilizzando Tabelle esterne BigLake o non BigLake
- Carica i dati di Cloud Storage in BigQuery
- Esportare i dati da BigQuery in Cloud Storage
Esegui query sui dati di Cloud Storage
Quando esegui query sui dati in Cloud Storage utilizzando una tabella BigLake o una tabella esterna non BigLake, i dati su cui esegui la query devono essere colocalizzati con il set di dati BigQuery. Ad esempio:
Bucket a regione singola: se il set di dati BigQuery si trova nella regione di Varsavia (
europe-central2
), anche il bucket Cloud Storage corrispondente deve trovarsi nella regione di Varsavia o in qualsiasi regione a due regioni di Cloud Storage che includa Varsavia. Se il set di dati BigQuery si trova nella multiregioneUS
, il bucket Cloud Storage può trovarsi nella multiregioneUS
, nella regione singola Iowa (us-central1
) o in qualsiasi regione doppia che include l'Iowa. Le query da qualsiasi altra singola regione hanno esito negativo, anche se il bucket si trova in una località contenuta all'interno di più regioni del set di dati. Ad esempio, se le tabelle esterne si trovano nella zona multiregionaleUS
e Il bucket Cloud Storage si trova in Oregon (us-west1
), il job non va a buon fine.Se il set di dati BigQuery si trova nella multiregione
EU
, il bucket Cloud Storage può trovarsi nella multiregioneEU
, nella regione singola Belgio (europe-west1
) o in qualsiasi regione doppia che include il Belgio. Le query da qualsiasi altra singola regione hanno esito negativo, anche se il bucket si trova in una località contenuta all'interno di più regioni del set di dati. Ad esempio, se le tabelle esterne si trovano nella zona multiregionaleEU
e Il bucket Cloud Storage si trova a Varsavia (europe-central2
), il job non riesce.Bucket a doppia regione: se il set di dati BigQuery si trova nella regione di Tokyo (
asia-northeast1
), il bucket Cloud Storage corrispondente deve trovarsi nella regione di Tokyo o in una doppia regione che include Tokyo, come la doppia regioneASIA1
.Se il bucket Cloud Storage si trova nella regione a due zone
NAM4
o in qualsiasi regione a due zone che include la regione Iowa (us-central1
), il set di dati BigQuery corrispondente può trovarsi nella regione multiregionaleUS
o in Iowa (us-central1
).Se il bucket Cloud Storage si trova nella regione a due zone
EUR4
o in qualsiasi regione a due zone che include il Belgio (europe-west1
), il set di dati BigQuery corrispondente può trovarsi nella regione a più zoneEU
o in Belgio (europe-west1
).Bucket multiregione: l'utilizzo di localizzazioni 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 include l'Iowa (us-central1
), come la regione doppiaNAM4
o in una regione doppia personalizzata che include l'Iowa (us-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 include il Belgio (europe-west1
), come la regione doppiaEUR4
o in una regione doppia personalizzata che include il Belgio.
Per ulteriori informazioni sulle località di Cloud Storage supportate, consulta Località dei bucket nella documentazione di Cloud Storage.
Carica i dati da Cloud Storage
Quando carichi dati da Cloud Storage utilizzando una tabella esterna BigLake o non BigLake, i dati caricati devono essere collocati con il set di dati BigQuery.
Puoi caricare i dati da un bucket Cloud Storage situato in qualsiasi località se il tuo set di dati BigQuery si trova nell'area multiregionale
US
.- Bucket multiregione: se il
bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in un bucket multiregione, il
tuo set di dati BigQuery può trovarsi nello stesso bucket multiregione o in qualsiasi singola regione inclusa nello stesso bucket multiregione.
Ad esempio, se il bucket Cloud Storage si trova nella regione
EU
, il tuo set di dati BigQuery può trovarsi nella regioneEU
più regioni o una singola regione nelEU
. Bucket a due regioni: se il bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in un bucket a due regioni, il tuo set di dati BigQuery può trovarsi nelle regioni incluse nel bucket a due regioni o in un set di dati a più regioni che include la doppia regione. Ad esempio, se il tuo Cloud Storage Il bucket si trova nella regione
EUR4
, il set di dati BigQuery può trovarsi in Finlandia (europe-north1
) regione singola, Paesi Bassi (europe-west4
) una singola regione oEU
.Bucket a singola regione: se il bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in una singola regione, il set di dati BigQuery può trovarsi nella stessa regione o nella regione multipla che include la regione singola. Ad esempio, se il bucket Cloud Storage si trova in Finlandia, (
europe-north1
), il set di dati BigQuery può trovarsi in Finlandia oEU
.Un'eccezione è che se il set di dati BigQuery si trova nella regione
asia-northeast1
, allora il bucket Cloud Storage può trovarsi nella località multiregionaleEU
.
Per ulteriori informazioni, consulta Caricare i dati in batch.
Esportare i dati in Cloud Storage
Assegna i bucket Cloud Storage per l'esportazione dei dati:- Se il set di dati BigQuery si trova nella regione multipla
EU
, il bucket Cloud Storage contenente i dati esportati deve trovarsi nella stessa regione multipla o in una posizione contenuta nella regione multipla. Ad esempio, se il set di dati BigQuery è nella località multiregionaleEU
, il bucket Cloud Storage può trovarsi nella zonaeurope-west1
Regione del Belgio all'interno dell'UE.Se il set di dati si trova nella località multiregionale
US
, puoi esportare i dati in un bucket Cloud Storage in qualsiasi località. - Se il set di dati si trova in una regione, il bucket Cloud Storage deve trovarsi nella stessa regione. Per
Ad esempio, se il set di dati si trova nella regione
asia-northeast1
di Tokyo, i dati di Cloud Storage il bucket non può trovarsi nella località multiregionaleASIA
.
Per ulteriori informazioni, vedi Esportare i dati delle tabelle.
Bigtable
Quando esegui query sui dati in Bigtable tramite una tabella esterna di 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 è sconsigliato per le tabelle esterne su Bigtable.
Per saperne di più sulle località Bigtable supportate, consulta Posizioni Bigtable.
Google Drive
Le considerazioni sulla posizione non si applicano a Google Drive e origini dati esterne.
Gestione dati
-
Sviluppare un piano di gestione dei dati:
- Se scegli una risorsa di archiviazione regionale, ad esempio un set di dati BigQuery un bucket Cloud Storage, sviluppa un piano la gestione geografica dei tuoi dati.
Spostamento di dati tra località
Per spostare manualmente un set di dati da una posizione all'altra:
-
Esportare i dati da BigQuery in un bucket Cloud Storage nella stessa località del set di dati o in una posizione contenuta all'interno di quella del set di dati. Ad esempio, se il tuo set di dati si trova nella zona
EU
località multiregionale, puoi esportare i dati ineurope-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 da
US
più regioni alla regioneasia-northeast1
di Tokyo, trasferirai i dati in un bucket creato a Tokyo. Per informazioni sul trasferimento di oggetti Cloud Storage, consulta Copiare, rinominare e spostare oggetti disponibile nella documentazione di Cloud Storage.Il trasferimento di dati tra regioni comporta costi di uscita dalla rete in Cloud Storage.
-
Crea un nuovo BigQuery nella nuova località, 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 addebita dei costi per archiviare i dati in Cloud Storage finché non elimini i dati o il bucket. Ti viene inoltre addebitato il costo di archiviazione dei dati in BigQuery dopo il caricamento. Caricamento in corso... in BigQuery è soggetto alle limiti dei job di caricamento.
Puoi utilizzare anche 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 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 vengono inoltre addebitati i costi per l'archiviazione dei dati e di eventuali risorse utilizzate dall'origine dell'applicazione, fatte salve le 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 di 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.