Utilizzo del rilevamento automatico dello schema
Rilevamento automatico dello schema
Il rilevamento automatico dello schema consente a BigQuery di dedurre lo schema per CSV, JSON o Fogli Google. Il rilevamento automatico dello schema è disponibile quando caricare i dati in BigQuery e quando esegui una query su un'origine dati esterna.
Quando il rilevamento automatico è abilitato, BigQuery deduce il tipo di dati per
ogni colonna. BigQuery seleziona un file casuale nell'origine dati
ed esegue la scansione fino alle prime 500 righe di dati da utilizzare come campione rappresentativo.
BigQuery esamina poi ogni campo e tenta di assegnare i dati
a quel campo in base ai valori del campione. Se tutte le righe in un oggetto
sono vuote, il rilevamento automatico sarà impostato su STRING
tipo di dati per la colonna.
Se non attivi il rilevamento automatico dello schema per CSV, JSON o Fogli Google devi fornire lo schema manualmente durante la creazione della tabella.
Non è necessario abilitare il rilevamento automatico dello schema per Avro, Parquet, ORC, Firestore o di esportare i file in Datastore. Questi formati file sono autodescrittivi, quindi BigQuery deduce automaticamente lo schema della tabella dall'origine e i dati di Google Cloud. Per i file Parquet, Avro e Orc, puoi facoltativamente fornire un elemento per eseguire l'override dello schema dedotto.
Puoi vedere lo schema rilevato per una tabella nei seguenti modi:
- Utilizzare la console Google Cloud.
- Usa lo strumento a riga di comando bq
bq show
.
Quando BigQuery rileva schemi, in rare occasioni potrebbe modificare il nome di un campo per renderlo compatibile con GoogleSQL la sintassi.
Per informazioni sulle conversioni dei tipi di dati, consulta le seguenti risorse:
- Conversione del tipo di dati quando si caricano i dati da Datastore
- Conversione del tipo di dati durante il caricamento dei dati da Firestore
- Conversioni Avro
- Conversioni Parquet
- Conversioni ORC
Caricamento dei dati utilizzando il rilevamento automatico dello schema
Per attivare il rilevamento automatico dello schema durante il caricamento dei dati, utilizza uno dei seguenti approcci:
- Nella sezione Schema della console Google Cloud, per Rilevamento automatico, seleziona l'opzione Schema e parametri di input.
- Nello strumento a riga di comando bq, usa il comando
bq load
con il comando--autodetect
.
Quando è abilitato il rilevamento automatico dello schema, BigQuery effettua una
tentativo di dedurre automaticamente lo schema per i file CSV e JSON.
La logica di rilevamento automatico deduce i tipi di campi dello schema leggendo i
le prime 500 righe di dati. Le linee iniziali vengono ignorate se --skip_leading_rows
è presente. I tipi di campo si basano sulle righe con il maggior numero di campi.
Pertanto, il rilevamento automatico dovrebbe funzionare come previsto, purché vi siano almeno
una riga di dati con valori in ogni colonna/campo.
Il rilevamento automatico dello schema non viene utilizzato con file Avro, Parquet e ORC, File di esportazione Firestore o file di esportazione Datastore. Quando caricare questi file in BigQuery, lo schema della tabella viene recuperate dai dati di origine autodescrittivi.
Per utilizzare il rilevamento automatico dello schema quando carichi dati JSON o CSV:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Spazio di esplorazione, espandi il progetto e seleziona un set di dati.
Espandi
Azioni e fai clic su Apri.Nel riquadro dei dettagli, fai clic su Crea tabella.
.Nella sezione Origine della pagina Crea tabella:
- Per Crea tabella da, seleziona il tipo di origine che ti interessa.
Nel campo di origine, cerca il bucket File/Cloud Storage oppure inserisci l'URI Cloud Storage. Tieni presente che non puoi includono più URI nella console Google Cloud, caratteri jolly sono supportati. Il bucket Cloud Storage deve trovarsi nello stesso posizione come il set di dati che contiene la tabella che stai creando.
In Formato file, seleziona CSV o JSON.
Nella sezione Destinazione della pagina Crea tabella:
In Nome set di dati, scegli il set di dati appropriato.
Nel campo Nome tabella, inserisci il nome della tabella che stai in fase di creazione.
Verifica che l'opzione Tipo di tabella sia impostata su Tabella nativa.
Fai clic su Crea tabella.
bq
Esegui il comando bq load
con il parametro --autodetect
.
(Facoltativo) Fornisci il flag --location
e imposta il valore su
località.
Il seguente comando carica un file utilizzando il rilevamento automatico dello schema:
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE
Sostituisci quanto segue:
LOCATION
: il nome del luogo in cui ti trovi. La Il flag--location
è facoltativo. Ad esempio, se utilizzi BigQuery nella regione di Tokyo, imposta il valore del flag suasia-northeast1
. Puoi impostare un valore predefinito per la località utilizzando: nel file.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
oCSV
.DATASET
: il set di dati che contiene la tabella in cui stai caricando i dati.TABLE
: il nome della tabella in cui ti trovi caricare i dati.PATH_TO_SOURCE
: è la posizione del file CSV o JSON.
Esempi:
Inserisci il seguente comando per caricare myfile.csv
dalla tua app locale
in una tabella denominata mytable
archiviata in un set di dati denominato
mydataset
.
bq load --autodetect --source_format=CSV mydataset.mytable ./myfile.csv
Inserisci il seguente comando per caricare myfile.json
dalla tua app locale
in una tabella denominata mytable
archiviata in un set di dati denominato
mydataset
.
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable ./myfile.json
API
Crea un job
load
che rimandi ai dati di origine. Per informazioni su creazione di job, consulta Esecuzione di job BigQuery in modo programmatico. Specifica la tua località nella proprietàlocation
injobReference
.Specifica il formato dei dati impostando la proprietà
sourceFormat
. Per utilizzare rilevamento automatico dello schema, questo valore deve essere impostato suNEWLINE_DELIMITED_JSON
oCSV
.Utilizza la proprietà
autodetect
per impostare il rilevamento automatico dello schema sutrue
.
Vai
Prima di provare questo esempio, segui le istruzioni per la configurazione di Go nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Go BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni per la configurazione di Java nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Java BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni per la configurazione di Node.js nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Node.js BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
PHP
Prima di provare questo esempio, segui le istruzioni per la configurazione di PHP nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API PHP BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Python
Per attivare il rilevamento automatico dello schema, imposta il valore
LoadJobConfig.autodetect
a True
.
Prima di provare questo esempio, segui le istruzioni per la configurazione di Python nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Python BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Ruby
Prima di provare questo esempio, segui le istruzioni per la configurazione di Ruby nel Guida rapida di BigQuery con librerie client. Per ulteriori informazioni, consulta API Ruby BigQuery documentazione di riferimento.
Per eseguire l'autenticazione su BigQuery, configura Credenziali predefinite dell'applicazione. Per ulteriori informazioni, vedi Configura l'autenticazione per le librerie client.
Rilevamento automatico dello schema per origini dati esterne
Il rilevamento automatico dello schema può essere utilizzato con file CSV, JSON e Fogli Google esterni diverse origini dati. Quando è abilitato il rilevamento automatico dello schema, BigQuery fa il possibile per dedurre automaticamente lo schema dall'origine e i dati di Google Cloud. Se non attivi il rilevamento automatico dello schema per queste origini, devono fornire uno schema esplicito.
Non è necessario abilitare il rilevamento automatico dello schema quando esegui query su Avro esterno, File di esportazione Parquet, ORC, Firestore o Datastore. Questi formati file sono autodescrittive, perciò BigQuery deduce automaticamente la tabella dai dati di origine. Per i file Parquet, Avro e Orc, puoi: facoltativamente, fornisci uno schema esplicito per sostituire quello dedotto.
Utilizzando la console Google Cloud, puoi abilitare il rilevamento automatico dello schema selezionando l'opzione Schema e parametri di input per Rilevamento automatico.
Utilizzando lo strumento a riga di comando bq, puoi abilitare il rilevamento automatico dello schema quando
Crea un file di definizione della tabella per CSV,
JSON o Fogli Google. Quando utilizzi lo strumento bq per creare
di definizione delle tabelle, passa il flag --autodetect
al comando mkdef
per
attiva il rilevamento automatico dello schema o passa il flag --noautodetect
per disabilitare
rilevamento automatico.
Quando utilizzi il flag --autodetect
, l'impostazione autodetect
è impostata su true
nel file di definizione della tabella. Quando utilizzi il flag --noautodetect
, il valore
L'impostazione autodetect
è impostata su false
. Se non fornisci uno schema
per l'origine dati esterna quando crei una definizione di tabella e
non usi il flag --noautodetect
o --autodetect
, autodetect
il valore predefinito è true
.
Quando crei un file di definizione della tabella utilizzando l'API, imposta il valore dell'attributo
autodetect
a true
o false
. Impostazione di autodetect
su true
attiva il rilevamento automatico. Se imposti autodetect
su false
, il rilevamento automatico viene disattivato.
Dettagli sul rilevamento automatico
Oltre a rilevare i dettagli dello schema, il rilevamento automatico riconosce la seguenti:
Compressione
BigQuery riconosce la compressione dei file compatibili con gzip all'apertura un file.
Valori di data e ora
BigQuery rileva i valori di data e ora in base alla formattazione del i dati di origine.
I valori nelle colonne DATE
devono essere nel seguente formato: YYYY-MM-DD
.
I valori nelle colonne TIME
devono essere nel seguente formato: HH:MM:SS[.SSSSSS]
(il componente frazionario di secondo è facoltativo).
Per TIMESTAMP
colonne, BigQuery rileva un'ampia gamma di
formati di timestamp, inclusi, a titolo esemplificativo:
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSSSSS
YYYY/MM/DD HH:MM
Un timestamp può anche contenere un offset UTC o l'indicatore di zona UTC ("Z").
Ecco alcuni esempi di valori che BigQuery eseguirà automaticamente come valori di timestamp:
- 19-08-2018 12:11
- 19-08-2018 12:11:35.22
- 19/08/2018 12:11
- 19-08-2018 07:11:35.220 -05:00
Se BigQuery non riconosce il formato, carica la colonna come tipo di dati della stringa. In questo caso, potresti dover pre-elaborare i dati di origine prima di caricarlo. Ad esempio, se esporti dati CSV da un foglio di lavoro, imposta il formato della data in modo che corrisponda a uno degli esempi mostrati qui. In alternativa, puoi trasformare i dati dopo averli caricati in BigQuery.
Rilevamento automatico dello schema per i dati CSV
Delimitatore CSV
BigQuery rileva i seguenti delimitatori:
- virgola ( , )
- barra verticale ( | )
- tabulazione ( \t )
Intestazione CSV
BigQuery deduce le intestazioni confrontando la prima riga del file con altre righe del file. Se la prima riga contiene solo stringhe e altre righe contengono altri tipi di dati, BigQuery presuppone che la prima riga è una riga di intestazione. BigQuery assegna i nomi delle colonne in base ai nomi dei campi nella riga di intestazione. I nomi potrebbero essere modificati per soddisfare le regole di denominazione per le colonne in BigQuery. Ad esempio, gli spazi verranno sostituiti con trattini bassi.
Altrimenti, BigQuery presuppone che la prima riga sia una riga di dati e
assegna nomi generici di colonna come string_field_1
. Tieni presente che dopo una tabella
i nomi delle colonne non possono essere aggiornati nello schema, sebbene sia possibile
cambia i nomi
manualmente
dopo la creazione della tabella. Un'altra opzione è fornire uno schema esplicito
anziché il rilevamento automatico.
Potresti avere un file CSV con una riga di intestazione, in cui tutti i campi di dati sono
stringhe. In questo caso, BigQuery non rileverà automaticamente
la prima riga contiene un'intestazione. Utilizza l'opzione --skip_leading_rows
per saltare il passaggio
riga di intestazione. In caso contrario, l'intestazione verrà importata come dati. Guarda anche
fornendo uno schema esplicito in questo caso, in modo da poter assegnare i nomi delle colonne.
Nuove righe tra virgolette in CSV
BigQuery rileva i caratteri di nuova riga tra virgolette all'interno di un campo CSV e non interpreta il carattere di nuova riga tra virgolette come un limite di riga.
Rilevamento automatico dello schema per i dati JSON
Campi JSON nidificati e ripetuti
BigQuery deduce i campi nidificati e ripetuti nei file JSON. Se
è un oggetto JSON, BigQuery carica la colonna come
Tipo di RECORD
. Se il valore di un campo è un array, BigQuery carica
la colonna come colonna ripetuta. Per un esempio di dati JSON con elementi
di dati ripetuti, consulta
Caricamento di dati JSON nidificati e ripetuti.
Conversione stringa
Se abiliti il rilevamento automatico dello schema, BigQuery converte
stringhe in tipi booleani, numerici o di data/ora, se possibile. Ad esempio:
Utilizzando i seguenti dati JSON, il rilevamento automatico dello schema converte il campo id
in una colonna INTEGER
:
{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}
Per ulteriori informazioni, vedi Caricamento di dati JSON da Cloud Storage.
Rilevamento automatico dello schema per Fogli Google
Per Fogli, BigQuery rileva automaticamente se le la prima riga contiene una riga di intestazione, in modo simile al rilevamento automatico dei file CSV. Se il primo è identificata come un'intestazione, BigQuery assegna i nomi delle colonne in base ai nomi dei campi nella riga di intestazione e ignora la riga. I nomi potrebbero essere modificati per soddisfare le regole di denominazione colonne in in BigQuery. Ad esempio, gli spazi verranno sostituiti con trattini bassi.
Sicurezza dei tavoli
Per controllare l'accesso alle tabelle in BigQuery, consulta Introduzione ai controlli di accesso alle tabelle.