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
Nella console Google Cloud, vai a BigQuery.
- Nel riquadro Explorer, espandi il progetto e seleziona un set di dati.
- Fai clic su Visualizza azioni e poi su Crea tabella. Si aprirà il riquadro Crea tabella.
- Nella sezione Origine, specifica i seguenti dettagli:
- In Crea tabella da, seleziona Google Cloud Storage.
- 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. - Nell'elenco Formato file, seleziona il tipo di file.
- 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
. - 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.
- Deduzione automatica dei tipi: imposta la modalità di rilevamento dello schema della partizione su
- (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.
- Nella sezione Destinazione, specifica i seguenti dettagli:
- In Progetto, seleziona il progetto in cui vuoi creare la tabella.
- In Set di dati, seleziona il set di dati in cui vuoi creare la tabella.
- In Tabella, inserisci il nome della tabella che vuoi creare.
- Per Tipo di tabella, seleziona Tabella nativa .
- Nella sezione Schema, inserisci la definizione dello schema.
- Per attivare il rilevamento automatico dello schema, seleziona Rilevamento automatico.
- Per ignorare le righe con valori di colonna aggiuntivi che non corrispondono allo schema, espandi la sezione Opzioni avanzate e seleziona Valori sconosciuti.
- 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
oCUSTOM
. - Imposta il prefisso dell'URI di origine su
gs://my_bucket/my_table/
per le modalità di partizionamento HiveAUTO
oSTRINGS
. Per CUSTOM, forniscigs://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
eval
incluse, con valori2019-10-31
e1
, rispettivamente.
Per caricare solo i dati di file specifici:
- Imposta la modalità di partizionamento Hive su
AUTO
,STRINGS
oCUSTOM
. - Imposta il prefisso dell'URI di origine su
gs://my_bucket/my_table/
per le modalità di partizionamento HiveAUTO
oSTRINGS
. PerCUSTOM
, forniscigs://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
eval
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 tipoSTRING
.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
- Scopri di più sulle tabelle partizionate.
- Scopri come utilizzare SQL in BigQuery.