Introduzione alle tabelle esterne

Questa pagina introduce tabelle esterne e fornisce indicazioni sull'esecuzione di query sui dati archiviati al di fuori di BigQuery.

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 un una tabella esterna 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 le tabelle esterne non 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 è archiviata in modo permanente in un set di dati, non può essere condivisa con altri. Esecuzione di query un'origine dati esterna che utilizza una tabella temporanea è utile per query una tantum ad hoc su o per i processi ETL (Extract, Transform and Load).

Più file di origine

Se crei una tabella esterna non BigLake basata su Cloud Storage, puoi utilizzare più origini dati esterne purché queste origini dati abbiano lo stesso schema. Funzionalità non supportata per una tabella esterna non BigLake basata su Bigtable o Google Drive.

Limitazioni

Le seguenti limitazioni si applicano alle tabelle esterne:

  • BigQuery non garantisce la coerenza dei dati per indirizzi e tabelle di dati. 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. Le prestazioni di una query che include una tabella esterna dipende dal tipo di unità di archiviazione esterna. 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 dovrebbe essere equivalente alla lettura diretta dei dati dall'origine dati.
  • Non puoi modificare le tabelle di dati esterni utilizzando DML o altri metodi. Esterni sono di sola lettura per BigQuery.
  • Non puoi utilizzare il metodo dell'API JSON TableDataList per recuperare i dati da tabelle esterne. Per ulteriori informazioni, vedi tabledata.list Per aggirare questa limitazione, puoi salvare i risultati della query in una destinazione. tabella. In seguito, potrai utilizzare il metodo TableDataList nella tabella dei risultati.
  • Non puoi eseguire un job BigQuery che esporta i dati da un in una tabella esterna. Per aggirare questa limitazione, puoi salvare i risultati della query in una destinazione. tabella. Poi, esegui un job di esportazione nella tabella dei risultati.
  • Non puoi fare riferimento a una tabella esterna in un tabella con caratteri jolly query.
  • Le tabelle esterne non supportano il clustering. Supportano il partizionamento in modo limitato. Per maggiori dettagli, vedi Esecuzione di query su dati partizionati esternamente.
  • Quando esegui una query su un'origine dati esterna diversa da Cloud Storage, i risultati non sono memorizzati nella cache. (sono supportate le query GoogleSQL su Cloud Storage). Ti viene addebitata ogni query in base a una tabella esterna, anche se riscontri un problema la stessa query più volte. Se devi inviare ripetutamente una query rispetto a una tabella esterna che non cambia di frequente, considera scrivendo i risultati della query in una tabella permanente ed eseguire le query sulla tabella permanente.
  • Puoi eseguire al massimo 16 query in parallelo su Bigtable un'origine dati esterna.
  • 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. Esecuzione della query federata l'elaborazione di questi dati comporta un costo.
  • Non puoi utilizzare _object_metadata come nome di colonna nelle tabelle esterne. È riservati per uso interno.
  • BigQuery non supporta la visualizzazione dello spazio di archiviazione delle tabelle per le tabelle esterne.
  • Le tabelle esterne non supportano nomi di colonne flessibili.

Considerazioni sulla località

Quando scegli una località per i tuoi dati, considera quanto segue:

Cloud Storage

Puoi interagire con i dati di Cloud Storage utilizzando BigQuery nella nei seguenti modi:

Eseguire query sui dati di Cloud Storage

Quando esegui query sui dati in Cloud Storage utilizzando un BigLake o un tabella esterna non BigLake, i dati su cui esegui la query devono essere collocati 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 località multiregionale US, il bucket Cloud Storage può trovarsi nella località multiregionale US, una singola regione dell'Iowa (us-central1) o qualsiasi altra regione 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 multiregionale US e Il bucket Cloud Storage si trova in Oregon (us-west1), il job non riesce.

    Se il set di dati BigQuery si trova nella località multiregionale EU, il bucket Cloud Storage può trovarsi nella località multiregionale EU, la singola regione del Belgio (europe-west1) o qualsiasi regione a due regioni che includa 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 multiregionale EU e Il bucket Cloud Storage si trova a Varsavia (europe-central2), il job non riesce.

  • Bucket a due regioni: se il tuo Il set di dati BigQuery si trova nella regione di Tokyo (asia-northeast1), il bucket Cloud Storage corrispondente deve trovarsi nella regione di Tokyo, oppure in una doppia regione che include Tokyo, come ASIA1 a due regioni. Per saperne di più, consulta Creare un bucket a due regioni.

    Se il bucket Cloud Storage si trova nella doppia regione NAM4 o in qualsiasi a due regioni che include la regione dell'Iowa(us-central1), il valore corrispondente Il set di dati BigQuery può trovarsi nella località multiregionale US o Iowa (us-central1).

    Se il bucket Cloud Storage si trova nella doppia regione EUR4 o in qualsiasi a due regioni che include la regione Belgio(europe-west1), il set di dati BigQuery corrispondente può essere nel EU più regioni o nel Belgio(europe-west1).

  • Bucket multiregionale: utilizzo località di set di dati multiregionali con Cloud Storage multiregionale bucket non è consigliato per le tabelle esterne perché le 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 località multiregionale US, il bucket Cloud Storage corrispondente deve trovarsi nella località multiregionale US, in una doppia regione che include l'Iowa (us-central1), come NAM4 due regioni o in una doppia regione personalizzata che include l'Iowa (us-central1).

    Se il set di dati BigQuery si trova nella località multiregionale EU, il bucket Cloud Storage corrispondente deve trovarsi nella località multiregionale EU, in una doppia regione che include il Belgio (europe-west1), come EUR4 due regioni o in una regione doppia personalizzata che include il Belgio.

Per ulteriori informazioni sulle località 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 multiregionale: se Il bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in un bucket multiregionale, Il set di dati BigQuery può trovarsi nello stesso bucket multiregionale o in una singola regione inclusa nello stesso bucket multiregionale. Ad esempio, se il bucket Cloud Storage si trova nella regione EU, il tuo set di dati BigQuery può trovarsi nella regione EU più regioni o una singola regione nel EU.
  • Bucket a due regioni: se Il bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in un bucket a due regioni, Il set di dati BigQuery può trovarsi in regioni incluse nel bucket a due regioni, o in una località multiregionale che include due regioni. 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 o EU.

    Per ulteriori informazioni, vedi Crea un bucket a due regioni.

  • Bucket a regione singola: se il tuo 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 in più regioni 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 o EU.

  • Un'eccezione è che se il set di dati BigQuery si trova nella regione asia-northeast1, allora il bucket Cloud Storage può trovarsi nella località multiregionale EU.

Per ulteriori informazioni, vedi Caricamento in batch dei dati.

Esporta i dati in Cloud Storage

Assegna i bucket Cloud Storage per l'esportazione dei dati:
  • Se il set di dati BigQuery si trova nella località multiregionale EU, il bucket Cloud Storage contenenti i dati che esporti devono trovarsi nella stessa località multiregionale o in una località è contenuto all'interno di più regioni. Ad esempio, se il set di dati BigQuery è nella località multiregionale EU, il bucket Cloud Storage può trovarsi nella zona europe-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à multiregionale ASIA.

Per ulteriori informazioni, vedi Esportazione dei dati di una tabella.

Bigtable

Quando esegui una query sui dati in Bigtable tramite una tabella esterna di BigQuery, l'istanza Bigtable deve trovarsi nella stessa località Set di dati BigQuery:

  • Regione singola: se il set di dati BigQuery si trova in Belgio (europe-west1) località regionale, il corrispondente L'istanza Bigtable deve trovarsi nella regione del Belgio.
  • Più regioni: poiché le prestazioni delle query esterne dipendono da una latenza minima e 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 Posizioni Bigtable.

Google Drive

Le considerazioni sulla posizione non si applicano a Google Drive e origini dati esterne.

Gestione dati

    Sviluppa un piano di gestione dei dati:

Spostamento di dati tra località

Per spostare manualmente un set di dati da una posizione a un'altra:

  1. 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 in europe-west1 Belgio, che fa parte dell'UE.

    Non sono previsti costi per l'esportazione dei dati da BigQuery, ma sono previsti dei costi per archiviare i dati esportati in di archiviazione ideale in Cloud Storage. Le esportazioni di BigQuery sono soggette ai limiti job di esportazione.

  2. Copia o sposta i dati dal bucket Cloud Storage di esportazione in un nuovo bucket che hai creato nella località di destinazione. Ad esempio, se sposti i dati da US più regioni alla regione asia-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 addebiti per il traffico di rete in uscita in Cloud Storage.

  3. 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. Tu ti vengono addebitati anche i costi per l'archiviazione dei dati in BigQuery dopo il loro 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 grandi set di dati, consulta Utilizzare Cloud Storage con i big data.

Prezzi

Quando esegui una query su una tabella esterna da BigQuery, addebitato per l'esecuzione della query e i byte applicabili letti se utilizzi BigQuery on demand (per Prezzi di TiB) o 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 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, vedi Prezzi di Cloud Storage.
  • Per informazioni sui prezzi di Bigtable, consulta la pagina Prezzi.
  • Per informazioni sui prezzi di Drive, vedi Prezzi.

Passaggi successivi