Caricamento di dati partizionati esternamente

BigQuery può caricare i dati archiviati in Cloud Storage utilizzando un layout di partizione Hive. La partizione Hive indica che i dati esterni sono organizzati in più file, con una convenzione di denominazione per separare i file in partizioni diverse. Per ulteriori informazioni, consulta Layout dei dati supportati.

Per impostazione predefinita, i dati non vengono partizionati in BigQuery dopo il caricamento, a meno che non crei esplicitamente una tabella partizionata.

Carica i dati partizionati di Hive

Per caricare i dati partizionati di Hive, scegli una delle seguenti opzioni:

Console

  1. Nella console Google Cloud, vai a BigQuery.

    Vai a BigQuery

  2. Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
  3. Fai clic su Visualizza azioni e poi su Crea tabella. Si aprirà il riquadro Crea tabella.
  4. Nella sezione Origine, specifica i seguenti dettagli:
    1. In Crea tabella da, seleziona Google Cloud Storage.
    2. In Seleziona file dal bucket Cloud Storage, inserisci il percorso della cartella Cloud Storage utilizzando i carattere jolly. Ad esempio: my_bucket/my_files*. Il bucket Cloud Storage deve trovarsi nella stessa posizione del set di dati contenente la tabella che vuoi creare, aggiungere o sovrascrivere.
    3. Nell'elenco Formato file, seleziona il tipo di file.
    4. Seleziona la casella di controllo Partizionamento dei dati di origine e poi, in Seleziona il prefisso dell'URI di origine, inserisci il prefisso dell'URI Cloud Storage. Ad esempio, gs://my_bucket/my_files.
    5. Nella sezione Modalità di inferenza della partizione, seleziona una delle seguenti opzioni:
      • Deduzione automatica dei tipi: imposta la modalità di rilevamento dello schema della partizione su AUTO.
      • Tutte le colonne sono stringhe: imposta la modalità di rilevamento dello schema della partizione su STRINGS.
      • Fornisci il mio: imposta la modalità di rilevamento dello schema della partizione su CUSTOM e inserisci manualmente le informazioni sullo schema per le chiavi di partizione. Per ulteriori informazioni, consulta Fornire uno schema personalizzato per le chiavi di partizione.
    6. (Facoltativo) Per richiedere un filtro di partizione per tutte le query per questa tabella, seleziona la casella di controllo Richiedi filtro di partizione. Se il filtro di partizionamento è obbligatorio, gli utenti devono includere una clausola WHERE che specifichi le partizioni su cui eseguire la query. L'utilizzo di un filtro di partizionamento può ridurre i costi e migliorare le prestazioni. Per ulteriori informazioni, consulta Requisiti per i filtri predefiniti sulle chiavi di partizione nelle query.
  5. Nella sezione Destinazione, specifica i seguenti dettagli:
    1. In Progetto, seleziona il progetto in cui vuoi creare la tabella.
    2. In Set di dati, seleziona il set di dati in cui vuoi creare la tabella.
    3. In Tabella, inserisci il nome della tabella che vuoi creare.
    4. Per Tipo di tabella, seleziona Tabella nativa .
  6. Nella sezione Schema, inserisci la definizione dello schema.
  7. Per attivare il rilevamento automatico dello schema, seleziona Rilevamento automatico.
  8. Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.
  9. Fai clic su Crea tabella.

SQL

Per creare una tabella partizionata esternamente, utilizza la clausola WITH PARTITION COLUMNS dell'istruzione LOAD DATA per specificare i dettagli dello schema della partizione.

Per un esempio, consulta Caricare un file partizionato esternamente.

bq

Carica i dati partizionati di Hive utilizzando il rilevamento automatico del tipo di chiave di partizione:

bq load --source_format=ORC --hive_partitioning_mode=AUTO \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Carica i dati partizionati di Hive utilizzando il rilevamento delle chiavi di partizione di tipo stringa:

bq load --source_format=CSV --autodetect \
--hive_partitioning_mode=STRINGS \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix \
dataset.table gcs_uris

Carica i dati partizionati di Hive utilizzando uno schema della chiave di partizione personalizzato che viene codificato utilizzando il campo source\_uri\_prefix:

bq load --source_format=JSON --hive_partitioning_mode=CUSTOM \
--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/partition_key_schema \
dataset.table gcs_uris file_schema

Lo schema della chiave di partizione viene codificato immediatamente dopo il prefisso dell'URI di origine. Utilizza il seguente formato per specificare --hive_partitioning_source_uri_prefix:

--hive_partitioning_source_uri_prefix=gcs_uri_shared_prefix/{key1:TYPE1}/{key2:TYPE2}/{key3:TYPE3}

API

Il supporto per il partizionamento Hive è disponibile impostando HivePartitioningOptions su JobConfigurationLoad.

Esegui caricamenti incrementali

Considera il seguente layout dei dati:

gs://my_bucket/my_table/dt=2019-10-31/val=1/file1
gs://my_bucket/my_table/dt=2018-10-31/val=2/file2
gs://my_bucket/my_table/dt=2017-10-31/val=3/file3
gs://my_bucket/my_table/dt=2016-10-31/val=4/file4

Per caricare solo i dati dal 31-10-2019, procedi nel seguente modo:

  • Imposta la modalità di partizionamento Hive su AUTO, STRINGS o CUSTOM.
  • Imposta il prefisso dell'URI di origine su gs://my_bucket/my_table/ per le modalità di partizionamento Hive AUTO o STRINGS. Per CUSTOM, fornisci gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilizza l'URI gs://my_bucket/my_table/dt=2019-10-31/*.
  • I dati vengono caricati con le colonne dt e val incluse, con valori 2019-10-31 e 1, rispettivamente.

Per caricare solo i dati di file specifici:

  • Imposta la modalità di partizionamento Hive su AUTO, STRINGS o CUSTOM.
  • Imposta il prefisso dell'URI di origine su gs://my_bucket/my_table/ per le modalità di partizionamento Hive AUTO o STRINGS. Per CUSTOM, fornisci gs://my_bucket/my_table/{dt:DATE}/{val:INTEGER}.
  • Utilizza gli URI gs://my_bucket/my_table/dt=2017-10-31/val=3/file3,gs://my_bucket/my_table/dt=2016-10-31/val=4/file4.
  • I dati vengono caricati da entrambi i file con le colonne dt e val compilate.

Schema partizione

Le sezioni seguenti spiegano il layout predefinito delle tabelle Hive partizionate e le modalità di rilevamento dello schema supportate da BigQuery.

Layout dei dati supportati

Le chiavi di partizione Hive vengono visualizzate come colonne normali quando esegui query sui dati da Cloud Storage. I dati devono seguire un layout partizionato Hive predefinito. Ad esempio, i seguenti file seguono il layout predefinito: 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 dei dati non supportati

Se i nomi delle chiavi di partizione non sono codificati nel percorso della directory, il rilevamento dello schema della 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 vengono rilevati. Ad esempio, considera i seguenti due file con codifiche delle chiavi di partizione invertite:

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 della partizione Hive:

  • AUTO: i nomi e i tipi di chiavi vengono rilevati automaticamente. È possibile rilevare i seguenti tipi:

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

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

Schema della chiave di partizione personalizzata

Per utilizzare uno schema CUSTOM, devi specificarlo nel campo del prefisso dell'URI di origine. L'utilizzo di uno schema CUSTOM ti consente di specificare il tipo per ogni chiave di partizione. I valori devono essere analizzati correttamente come tipo specificato o la query non va a buon fine.

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

Limitazioni

  • Il supporto del partizionamento Hive è basato sul presupposto di un prefisso URI di origine comune per tutti gli URI che termina 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 le stesse chiavi di partizione nello stesso ordine, con un massimo di dieci chiavi di partizione per tabella.
  • I dati devono seguire un layout di partizione Hive predefinito.
  • Le chiavi di partizione Hive e le colonne nei file sottostanti non possono sovrapporsi.
  • L'assistenza è solo per GoogleSQL.

  • Si applicano tutte le limitazioni per il caricamento da Cloud Storage.

Passaggi successivi