Caricamento di dati partizionati esternamente
BigQuery può caricare i dati archiviati in Cloud Storage utilizzando un layout di partizionamento Hive. Il partizionamento hive indica che i dati esterni sono organizzati in più file, con una convenzione di denominazione per separare i file in diverse partizioni. Per ulteriori informazioni, consulta Layout dei dati supportati.
Per impostazione predefinita, i dati non sono partizionati in BigQuery dopo averli caricati, a meno che non crei esplicitamente una tabella partizionata.
Carica dati partizionati Hive
Per caricare 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. Viene visualizzato 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 caratteri jolly.
Ad esempio:
my_bucket/my_files*
. Il bucket Cloud Storage deve trovarsi nella stessa località del set di dati contenente la tabella da creare, aggiungere o sovrascrivere. - Nell'elenco Formato file, seleziona il tipo di file.
- Seleziona la casella di controllo Partizionamento dei dati di origine e, per Seleziona
prefisso dell'URI di origine, inserisci il prefisso dell'URI Cloud Storage. Ad esempio,
gs://my_bucket/my_files
. - Nella sezione Modalità di inferenza delle partizioni, seleziona una delle seguenti opzioni:
- Deduci automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione su
AUTO
. - Tutte le colonne sono stringhe: imposta la modalità di rilevamento dello schema di partizione su
STRINGS
. - Fornisci un'opzione personalizzata: imposta la modalità di rilevamento dello schema di partizione su
CUSTOM
e inserisci manualmente le informazioni sullo schema per le chiavi di partizione. Per maggiori informazioni, consulta Fornire uno schema di chiavi di partizionamento personalizzato.
- Deduci automaticamente i tipi: imposta la modalità di rilevamento dello schema di partizione su
- (Facoltativo) Per richiedere un filtro di partizionamento su tutte le query per questa tabella, seleziona la casella di controllo Richiedi filtro di partizionamento. La richiesta di un filtro di partizionamento può ridurre i costi e migliorare le prestazioni. Per maggiori informazioni, consulta Richiedere filtri dei predicati 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 di 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 di partizione.
Per un esempio, vedi 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 Hive utilizzando uno schema di chiave di partizione personalizzata codificato mediante 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 esiste 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 del 31/10/2019:
- 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 PERSONALIZZATO, 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 i 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 di partizione
Le sezioni seguenti spiegano il layout predefinito di Hive partizionato e le modalità di rilevamento dello schema supportate da BigQuery.
Layout dei dati supportati
Le chiavi di partizione Hive vengono visualizzate come normali colonne quando esegui query sui dati di Cloud Storage. I dati devono seguire un layout partizionato di Hive predefinito. Ad esempio, i seguenti file seguono il layout predefinito: le coppie chiave-valore sono configurate come directory con il segno uguale (=) come separatore e le chiavi di partizione hanno sempre lo 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 di partizione non va a buon fine. Ad esempio, considera il percorso seguente, 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 è nell'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 di partizione Hive:
AUTO
: nomi e tipi di chiavi vengono rilevati automaticamente. Possono essere rilevati i seguenti tipi:- STRING
- NUMERO INTERO
-
Ad esempio,
/date=2018-10-18/
. -
Ad esempio,
/time=2018-10-18 16:00:00+00/
.
STRINGS
: i nomi della chiave vengono convertiti automaticamente in tipoSTRING
.CUSTOM
: lo schema della chiave di partizione è codificato come specificato nel prefisso dell'URI di origine.
Schema della chiave di partizione personalizzata
Per utilizzare uno schema CUSTOM
, devi specificare lo schema nel campo del prefisso dell'URI di origine. L'uso di uno schema CUSTOM
consente di specificare il tipo di ogni chiave di partizione.
I valori devono essere analizzati in modo valido come il tipo specificato, altrimenti 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 considera val
come STRING, dt
come DATA e utilizza gs://my_bucket/my_table
come prefisso dell'URI di origine per i file corrispondenti.
Limitazioni
- Il supporto per il partizionamento Hive è basato su un prefisso dell'URI di origine comune per tutti gli URI che termina immediatamente prima della codifica delle partizioni, come segue:
gs://BUCKET/PATH_TO_TABLE/
. - Si presume che la struttura di directory di una tabella partizionata Hive mostri le stesse chiavi di partizionamento 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 è disponibile 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.