Introduzione alle tabelle esterne

Questo documento descrive come utilizzare i dati archiviati all'esterno di BigQuery nelle tabelle esterne. Per utilizzare le origini dati esterne, puoi anche utilizzare i set di dati esterni.

Le tabelle esterne non BigLake consentono di eseguire query sui dati strutturati nei 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 le 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 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 è archiviata in modo permanente in un set di dati, non può essere condivisa con altri utenti. L'esecuzione di query su un'origine dati esterna utilizzando una tabella temporanea è utile per le query ad hoc una tantum sui 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 queste abbiano lo stesso schema. Questa funzionalità 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 spazio di archiviazione esterno. 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, il rendimento delle query per una tabella esterna dovrebbe essere equivalente 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 TableDataList per recuperare i dati dalle tabelle esterne. Per ulteriori informazioni, consulta tabledata.list. Per ovviare a questa limitazione, puoi salvare i risultati delle 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 ovviare a questa limitazione, 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 di tabella con funzione carattere jolly.
  • Le tabelle esterne non supportano il clustering. Supportano il partizionamento in modi limitati. Per i 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 addebitato un costo 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, 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.
  • 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_metadata come 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 nomi di colonne flessibili.
  • BI Engine non supporta le query sulle tabelle esterne.
  • BigQuery non supporta Data Boost per Spanner per la lettura dei dati Bigtable da BigQuery.
  • BigQuery non supporta il time travel o i dati di sicurezza finestre di conservazione per le tabelle esterne. Tuttavia, per le tabelle esterne di Apache Iceberg, puoi utilizzare la FOR SYSTEM_TIME AS OF clausola per accedere agli snapshot conservati nei metadati di Iceberg.
  • Si applicano tutte le limitazioni specifiche del formato:

Considerazioni sulla località

Quando scegli una località per la tabella esterna, devi tenere in considerazione sia la località del set di dati BigQuery sia l'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:

  • Bucket a livello di regione

    Se il bucket Cloud Storage si trova nella regione us-central1 (Iowa), il set di dati BigQuery deve trovarsi nella regione us-central1 (Iowa) o nella multiregione US.

    Se il bucket Cloud Storage si trova nella regione europe-west4 (Paesi Bassi), il set di dati BigQuery deve trovarsi nella regione europe-west4 (Paesi Bassi) o nella multiregione EU.

    Se il bucket Cloud Storage si trova nella regione europe-west1 (Belgio), il set di dati BigQuery corrispondente deve trovarsi nella regione europe-west1 (Belgio) o nella multiregione EU.

  • Bucket a due regioni

    Se il bucket Cloud Storage si trova nella doppia regione predefinita NAM4 o in una doppia regione configurabile che include la regione us-central1 (Iowa), il set di dati BigQuery corrispondente deve trovarsi nella regione us-central1 (Iowa) o nella multiregione US.

    Se il bucket Cloud Storage si trova nella doppia regione predefinita EUR4 o in una doppia regione configurabile che include la regione europe-west4 (Paesi Bassi), il set di dati BigQuery corrispondente deve trovarsi nella regione europe-west4 (Paesi Bassi) o nella multiregione EU.

    Se il bucket Cloud Storage si trova nella doppia regione predefinita ASIA1, il set di dati BigQuery corrispondente deve trovarsi nella regione asia-northeast1 (Tokyo) o asia-northeast2 (Osaka).

    Se il bucket Cloud Storage utilizza una doppia regione configurabile che include le regioni australia-southeast1 (Sydney) e australia-southeast2 (Melbourne), il bucket BigQuery corrispondente deve trovarsi nella regione australia-southeast1 (Sydney) o australia-southeast2 (Melbourne).

  • Bucket multiregionali

    L'utilizzo di località di set di dati multiregionali con bucket Cloud Storage multiregionali non è consigliato per le tabelle esterne, perché il rendimento delle query esterne dipende dalla latenza minima e dalla 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 multiregione US, nella regione singola us-central1 (Iowa) o in una regione a due regioni che include us-central1 (Iowa), come la regione a due regioni NAM4, o in una regione a due regioni configurabile che include us-central1.

    Se il set di dati BigQuery si trova nella EU multiregione, il bucket Cloud Storage corrispondente deve trovarsi nella EU multiregione, nella regione singola europe-west1 (Belgio) o europe-west4 (Paesi Bassi), in una regione a due regioni che include europe-west1 (Belgio) o europe-west4 (Paesi Bassi), come la regione a due regioni EUR4, o in una regione a due regioni configurabile che include europe-west1 o europe-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:

  • Regione singola: 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é il rendimento delle query esterne dipende dalla latenza minima e dalla larghezza di banda di rete ottimale, l'utilizzo di località di set di dati multiregionali non è consigliato per le tabelle esterne in Bigtable.

Per ulteriori informazioni 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 le località

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

  1. Esporta i dati dalle tabelle BigQuery in un bucket Cloud Storage.

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

  2. Copia o sposta i dati dal bucket Cloud Storage di esportazione a un nuovo bucket creato nella località di destinazione. Ad esempio, se sposti i dati dalla US multiregione alla asia-northeast1 regione Tokyo, devi trasferire i dati in un bucket creato a Tokyo. Per informazioni sul trasferimento di oggetti Cloud Storage, consulta Copiare, rinominare e spostare oggetti nella documentazione di Cloud Storage.

    Il trasferimento di dati tra regioni comporta costi di traffico in uscita dalla rete in Cloud Storage.

  3. 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 viene addebitato alcun costo per il caricamento dei dati in BigQuery, ma ti verranno addebitati i costi per l'archiviazione dei dati in Cloud Storage finché 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 dei 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 a livello di programmazione.

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.

Ottimizzare le query delle tabelle esterne di Cloud Storage

Per ottimizzare il rendimento e potenzialmente ridurre i costi quando esegui query sui dati in Cloud Storage con tabelle esterne, valuta la possibilità di abilitare Rapid Cache.

Rapid Cache fornisce una cache di lettura zonale basata su SSD per i bucket Cloud Storage. Quando è abilitato, BigQuery utilizza Rapid Cache per gestire le richieste di lettura degli oggetti, fornendoti:

  • Rendimento delle query accelerato: letture dei dati più rapide da Cloud Storage per i carichi di lavoro BigQuery.
  • Costi di trasferimento dei dati di rete ridotti: tariffe di trasferimento dei dati ridotte per carichi di lavoro BigQuery supportati da bucket multiregionali. I dati letti da una cache comportano costi di rete inferiori rispetto ai dati letti direttamente da un bucket multiregionale.

BigQuery è un servizio regionale, ma le sue risorse di calcolo sottostanti possono spostarsi tra le zone per il bilanciamento del carico, pertanto ti consigliamo di abilitare Rapid Cache in tutte le zone all'interno della regione in cui viene eseguito il carico di lavoro BigQuery. In questo modo, un'istanza della cache è disponibile indipendentemente dalla zona utilizzata dal calcolo di BigQuery. Per ulteriori informazioni, consulta Prezzi di Rapid Cache.

Per determinare se Rapid Cache è la soluzione giusta per te, ti consigliiamo di utilizzare il recommender di Rapid Cache. Il motore per suggerimenti di Rapid Cache fornisce suggerimenti e approfondimenti per la creazione di cache nelle coppie bucket-zona analizzando l'utilizzo dei dati e l'archiviazione.

Prezzi

Quando esegui una query su una tabella esterna da BigQuery, ti vengono addebitati i costi per l'esecuzione della query e per i byte letti applicabili se utilizzi i prezzi on demand di BigQuery (per TiB) o il consumo di slot se utilizzi i prezzi di capacità di BigQuery (per ora di slot).

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

Ti vengono addebitati anche i costi 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. I costi 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 storage.
    • Costi di utilizzo della rete per i dati letti in regioni diverse.
    • Addebiti per il trattamento dati. Tuttavia, non ti vengono addebitati i costi per 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