Introduzione alle tabelle esterne

Questa pagina introduce le tabelle esterne e fornisce indicazioni su come eseguire 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 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 collegata alla tua 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. 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 ne crei una 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. Eseguire query su un'origine dati esterna utilizzando una tabella temporanea è utile per le query una tantum ad hoc su 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. Questo non è supportato 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 generare comportamenti imprevisti.
  • 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. Le prestazioni di una query che include una tabella esterna dipendono dal tipo di archiviazione esterna. Ad esempio, eseguire query sui dati archiviati in Cloud Storage è più veloce rispetto a eseguire query sui dati archiviati in Google Drive. In generale, le prestazioni delle query per una tabella esterna dovrebbero corrispondere 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 maggiori informazioni, consulta tabledata.list.

    Per aggirare questa limitazione, puoi salvare i risultati della query in una tabella di destinazione. Puoi quindi utilizzare il metodo TableDataList 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 tabella di destinazione. Quindi, esegui un job di esportazione sulla tabella dei risultati.

  • Non puoi fare riferimento a una tabella esterna in una query di tabella con caratteri 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. (sono supportate le query GoogleSQL su Cloud Storage). Ti viene addebitata ogni query in base a una tabella esterna anche se invii 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 invece le query sulla tabella permanente.

  • Puoi eseguire un massimo di 16 query in parallelo su un'origine dati esterna di Bigtable.

  • Una prova 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_metadata come nome di colonna nelle tabelle esterne. È prenotato per uso interno.

  • BigQuery non supporta la visualizzazione delle statistiche di archiviazione delle tabelle per le tabelle esterne.

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 nei seguenti modi:

Esegui query sui dati di Cloud Storage

Quando esegui query sui dati in Cloud Storage utilizzando una BigLake o una tabella esterna non BigLake, i dati su cui esegui la query devono essere collocati insieme al set di dati BigQuery. Ad esempio:

  • Bucket a regione singola: se il tuo 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 doppia regione di Cloud Storage che includa Varsavia. Se il set di dati BigQuery si trova nella località multiregionale US, il bucket Cloud Storage può trovarsi in una singola regione US, nella singola regione 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 della multiregione del set di dati. Ad esempio, se le tabelle esterne si trovano nella località multiregionale US 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 località multiregionale EU, il bucket Cloud Storage può trovarsi nella singola regione EU, in 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 della multiregione del set di dati. Ad esempio, se le tabelle esterne si trovano nella località multiregionale EU e il bucket Cloud Storage si trova a Varsavia (europe-central2), il job non va a buon fine.

  • Bucket a due regioni: se il tuo 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, ad esempio la doppia regione ASIA1. Per saperne di più, vedi Creare un bucket a due regioni.

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

    Se il bucket Cloud Storage si trova nella doppia regione EUR4 o in una qualsiasi delle due regioni che include la regione del Belgio(europe-west1), il set di dati BigQuery corrispondente può trovarsi in EU o in Belgio(europe-west1).

  • Bucket a più regioni: l'utilizzo di località di set di dati multiregionali con bucket Cloud Storage a più regioni non è consigliato per le tabelle esterne, poiché 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 località con più regioni US, il bucket Cloud Storage corrispondente deve trovarsi nella località con più regioni US, in una doppia regione che comprende l'Iowa (us-central1), ad esempio in NAM4, 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à con più regioni EU, in una doppia regione che comprende il Belgio (europe-west1), ad esempio EUR4, o in una doppia regione personalizzata che include il Belgio.

Per ulteriori informazioni sulle località di Cloud Storage supportate, consulta Località dei bucket nella documentazione di Cloud Storage.

Carica dati da Cloud Storage

Quando carichi i dati da Cloud Storage utilizzando una tabella esterna BigLake o non BigLake, i dati caricati devono essere collocati insieme al set di dati BigQuery.

  • Puoi caricare i dati da un bucket Cloud Storage situato in qualsiasi località se il set di dati BigQuery si trova in US (più regioni).

  • Bucket a più regioni: se il bucket Cloud Storage da cui vuoi eseguire il caricamento si trova in un bucket a più regioni, 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 set di dati BigQuery può trovarsi nella località multiregionale EU o in qualsiasi regione singola 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 il bucket a due regioni. Ad esempio, se il bucket Cloud Storage si trova nella regione EUR4, il set di dati BigQuery può trovarsi nella singola regione Finlandia (europe-north1), nei Paesi Bassi (europe-west4) o nella regione multiregionale EU.

    Per maggiori informazioni, consulta la sezione Creare un bucket a due regioni.

  • Bucket a regione singola: 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 singola o in una multiregione che include la singola regione. Ad esempio, se il bucket Cloud Storage si trova nella regione Finlandia (europe-north1), il set di dati BigQuery può trovarsi in Finlandia o nella regione multiregionale EU.

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

Per ulteriori informazioni, consulta Caricamento in batch dei dati.

Esporta i dati in Cloud Storage

Posiziona 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 contenente i dati esportati deve trovarsi nella stessa località a più regioni o in una località all'interno di più regioni. Ad esempio, se il set di dati BigQuery si trova nella località multiregionale EU, il bucket Cloud Storage può trovarsi nella regione europe-west1 del Belgio, che si trova all'interno dell'UE.

    Se il tuo set di dati si trova in US (più regioni), 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. Ad esempio, se il set di dati si trova nella regione di Tokyo asia-northeast1, il bucket Cloud Storage non può trovarsi nella regione multiregionale ASIA.

Per ulteriori informazioni, vedi Esportazione dei dati delle tabelle.

Bigtable

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

  • Regione singola: se il tuo set di dati BigQuery si trova nella località regionale in 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 una larghezza di banda di rete ottimale, l'utilizzo di località di set di dati multiregionali è sconsigliato per le tabelle esterne su Bigtable.

Per ulteriori informazioni sulle località Bigtable supportate, consulta Località di Bigtable.

Google Drive

Le considerazioni sulla località non si applicano alle origini dati esterne di Google Drive.

Gestione dei 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. Esporta i dati dalle tabelle BigQuery in un bucket Cloud Storage nella stessa località del set di dati o in una posizione all'interno di quella del set di dati. Ad esempio, se il tuo set di dati si trova nella località a più regioni EU, potresti esportare i dati nella località europe-west1 in Belgio, che fa parte dell'UE.

    L'esportazione dei dati da BigQuery è gratuita, mentre l'archiviazione dei dati esportati in Cloud Storage comporta un addebito di costi. Le esportazioni BigQuery sono soggette ai limiti dei 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 stai spostando i dati dalla regione multiregionale US alla regione di Tokyo asia-northeast1, trasferirai i dati in un bucket 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 addebiti per il traffico di rete in uscita in Cloud Storage.

  3. Crea un nuovo set di dati BigQuery nella nuova località, quindi carica i dati del bucket Cloud Storage nel nuovo set di dati.

    Non viene addebitato alcun costo per il caricamento dei dati in BigQuery, ma sono previsti costi per l'archiviazione dei dati in Cloud Storage fino a quando non elimini i dati o il bucket. Ti vengono addebitati anche i costi per l'archiviazione dei dati in BigQuery dopo il caricamento. Il caricamento di 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 maggiori 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 vengono addebitati i costi per l'esecuzione della query e i byte applicabili letti se utilizzi i prezzi on demand di BigQuery (per TiB) o l'utilizzo degli slot se utilizzi i prezzi della capacità di BigQuery (per slot ora).

Se i dati sono archiviati in formato ORC o Parquet su Cloud Storage, consulta Calcolo delle dimensioni dei dati.

Ti vengono addebitati anche i costi per l'archiviazione dei dati e delle eventuali risorse utilizzate dall'applicazione di origine, in conformità alle linee guida sui prezzi dell'applicazione:

  • Per informazioni sui prezzi di Cloud Storage, consulta la pagina relativa ai prezzi di Cloud Storage.
  • Per informazioni sui prezzi di Bigtable, consulta la pagina dei prezzi.
  • Per informazioni sui prezzi di Drive, consulta la sezione Prezzi.

Passaggi successivi