Utilizza dati partizionati esternamente

Puoi utilizzare le tabelle esterne di BigQuery per eseguire query sui dati partizionati i seguenti datastore:

I dati partizionati esterni devono utilizzare un layout di partizionamento Hive predefinito e che siano in uno dei seguenti formati:

  • Avro
  • CSV
  • JSON
  • ORC
  • Parquet

Per eseguire query su dati partizionati esternamente, devi creare un'istanza Tabella BigLake o un tabella esterna. Consigliamo di utilizzare le tabelle BigLake perché consentono di applicare una sicurezza granulare a livello di tabella. Per informazioni su BigLake e sulle tabelle esterne, consulta Introduzione alle tabelle BigLake e Introduzione alle tabelle esterne.

Puoi abilitare il supporto del partizionamento Hive impostando il criterio opzioni nel file di definizione della tabella. Per istruzioni sull'esecuzione di query su tabelle partizionate gestite, consulta Introduzione alle tabelle partizionate.

Schema di partizione

Le seguenti sezioni spiegano la definizione di Hive partizionato per impostazione predefinita layout e le modalità di rilevamento dello schema che BigQuery supporta.

Per evitare di leggere i file non necessari e migliorare le prestazioni, puoi usare predicare filtri sulle chiavi di partizione nelle query.

Layout di dati supportati

Le chiavi di partizione Hive vengono visualizzate come colonne normali quando esegui query sui dati di archiviazione ideale in Cloud Storage. I dati devono seguire un layout partizionato Hive predefinito. Ad esempio, i seguenti file seguono il layout predefinito, ovvero le coppie chiave-valore sono configurate come directory con un segno di uguale (=) come separatore. e le chiavi di partizione sono sempre nello stesso ordine:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/dt=2018-10-31/lang=fr/my_filename

Il prefisso dell'URI di origine comune in questo esempio è gs://my_bucket/my_table.

Layout di dati non supportati

Se i nomi delle chiavi di partizione non sono codificati nel percorso della directory, il rilevamento dello schema di partizione non va a buon fine. Ad esempio, considera il seguente percorso, che non codifica i nomi delle chiavi di partizione:

gs://my_bucket/my_table/2019-10-31/en/my_filename

Anche i file in cui lo schema non è in un ordine coerente non riusciranno a essere rilevati. Ad esempio, considera i seguenti due file con partizione invertita codifiche delle chiavi:

gs://my_bucket/my_table/dt=2019-10-31/lang=en/my_filename
gs://my_bucket/my_table/lang=fr/dt=2018-10-31/my_filename

Modalità di rilevamento

BigQuery supporta tre modalità di rilevamento dello schema di partizione Hive:

  • AUTO: i nomi e i tipi di chiavi vengono rilevati automaticamente. I seguenti tipi possono essere rilevate:

  • STRINGS: i nomi delle chiavi vengono convertiti automaticamente nel tipo STRING.

  • CUSTOM: lo schema della chiave di partizione è codificato come specificato nell'URI di origine .

Schema della chiave di partizione personalizzata

Per utilizzare uno schema CUSTOM, devi specificare lo schema nel prefisso dell'URI di origine . L'utilizzo di uno schema CUSTOM consente di specificare il tipo per ogni chiave di partizione. I valori devono essere analizzati validamente come il tipo specificato, altrimenti la query ha esito negativo.

Ad esempio, se imposti il flag source_uri_prefix su gs://my_bucket/my_table/{dt:DATE}/{val:STRING}, BigQuery tratta val come STRING, dt come DATA e utilizza gs://my_bucket/my_table come prefisso URI di origine per i file corrispondenti.

Eliminazione delle partizioni

BigQuery elimina le partizioni quando è possibile utilizzando i predicati delle query le chiavi di partizione. In questo modo BigQuery evita di leggere di file non necessari, contribuendo a migliorare le prestazioni.

Predicare filtri sulle chiavi di partizione nelle query

Quando crei una tabella partizionata esternamente, puoi richiedere l'utilizzo di dei filtri dei predicati sulle chiavi di partizione attivando requirePartitionFilter sotto HivePartitioningOptions.

Quando questa opzione è abilitata, prova a eseguire una query sulla tabella partizionata esternamente senza specificare una clausola WHERE, produrrà il seguente errore: Cannot query over table <table_name> without a filter over column(s) <partition key names> that can be used for partition elimination.

Limitazioni

  • Il supporto del partizionamento Hive viene creato assumendo un prefisso URI di origine comune per tutti gli URI che terminano immediatamente prima della codifica della partizione, come segue: gs://BUCKET/PATH_TO_TABLE/.
  • Si presume che la struttura di directory di una tabella partizionata Hive abbia lo stesso le chiavi di partizionamento vengono visualizzate nello stesso ordine, con un massimo di dieci chiavi di partizione per tabella.
  • I dati devono seguire un layout di partizionamento Hive predefinito.
  • Le chiavi di partizionamento Hive e le colonne nei file sottostanti non possono sovrapporsi.
  • L'assistenza è per Solo GoogleSQL.

  • Tutte le limitazioni per l'esecuzione di query su origini dati esterne archiviate su Cloud Storage.

Passaggi successivi