Modifica degli schemi delle tabelle
Questo documento descrive come modificare le definizioni dello schema per le tabelle BigQuery esistenti.
Puoi apportare la maggior parte delle modifiche allo schema descritte in questo documento utilizzando le istruzioni DDL (Data Definition Language) di SQL. Queste istruzioni non comportano addebiti.
Puoi modificare lo schema di una tabella in tutti i modi descritti in questa pagina esportando i dati della tabella in Cloud Storage e poi caricandoli in una nuova tabella con la definizione dello schema modificata. I job di caricamento ed estrazione di BigQuery sono gratuiti, ma devi sostenere i costi per l'archiviazione dei dati esportati in Cloud Storage. Le sezioni seguenti descrivono altri modi per eseguire vari tipi di modifiche allo schema.
Aggiungere una colonna
Puoi aggiungere colonne alla definizione dello schema di una tabella esistente utilizzando una delle seguenti opzioni:
- Aggiungi una nuova colonna vuota.
- Sovrascrivere una tabella con un job di caricamento o di query.
- Aggiungi dati a una tabella con un job di caricamento o di query.
Qualsiasi colonna aggiunta deve rispettare le regole di BigQuery per i nomi delle colonne. Per ulteriori informazioni sulla creazione di componenti dello schema, vedi Specificare uno schema.
Aggiungere una colonna vuota
Se aggiungi nuove colonne a uno schema di tabella esistente, le colonne devono essere
NULLABLE o REPEATED. Non puoi aggiungere una colonna REQUIRED a uno schema di tabella esistente. L'aggiunta di una colonna REQUIRED a uno schema di tabella esistente nell'API o nello strumento a riga di comando bq causa un errore. Tuttavia, puoi creare una colonna REQUIRED nidificata nell'ambito di un nuovo campo RECORD.
Le colonne REQUIRED possono essere aggiunte solo quando crei una tabella durante il caricamento dei dati o quando crei una tabella vuota con una definizione dello schema.
Per aggiungere colonne vuote alla definizione dello schema di una tabella:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi seleziona un set di dati.
Fai clic su Panoramica > Tabelle e poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. Potresti dover scorrere per visualizzare questo pulsante.
Nella pagina Schema attuale, in Nuovi campi, fai clic su Aggiungi campo.
- In Nome, digita il nome della colonna.
- Per Tipo, scegli il tipo di dati.
- Per Modalità,
scegli
NULLABLEoREPEATED.
Quando hai finito di aggiungere le colonne, fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER TABLE ADD COLUMN:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
bq
Esegui il comando bq update e fornisci un file di schema JSON. Se la tabella
che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi
l'ID progetto al nome del set di dati nel seguente formato:
PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il percorso del file dello schema JSON sul computer locale.
Quando specifichi uno schema incorporato, non puoi specificare la descrizione, la modalità e il tipo RECORD (STRUCT) della colonna. Per impostazione predefinita, tutte le modalità di colonna sono impostate su NULLABLE. Di conseguenza, se stai
aggiungendo una nuova colonna nidificata a un RECORD, devi
fornire un file di schema JSON.
Se tenti di aggiungere colonne utilizzando una definizione dello schema incorporata, devi
fornire l'intera definizione dello schema, incluse le nuove colonne. Poiché non puoi specificare le modalità delle colonne utilizzando una definizione dello schema incorporata, l'aggiornamento modifica qualsiasi colonna REPEATED esistente in NULLABLE, il che genera il seguente errore: BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
Il metodo preferito per aggiungere colonne a una tabella esistente utilizzando lo strumento a riga di comando bq è fornire un file di schema JSON.
Per aggiungere colonne vuote allo schema di una tabella utilizzando un file di schema JSON:
Innanzitutto, esegui il comando
bq showcon il flag--schemae scrivi lo schema della tabella esistente in un file. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il file di definizione dello schema scritto sulla tua macchina locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytablein un file, inserisci il comando seguente.mydataset.mytablesi trova nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonApri il file dello schema in un editor di testo. Lo schema dovrebbe essere simile al seguente:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Aggiungi le nuove colonne alla fine della definizione dello schema. Se provi ad aggiungere nuove colonne altrove nell'array, viene restituito il seguente errore:
BigQuery error in update operation: Precondition Failed.Utilizzando un file JSON, puoi specificare descrizioni, modalità
NULLABLEoREPEATEDe tipiRECORDper le nuove colonne. Ad esempio, utilizzando la definizione dello schema del passaggio precedente, il nuovo array JSON avrà il seguente aspetto. In questo esempio, viene aggiunta una nuova colonnaNULLABLEdenominatacolumn4.column4include una descrizione.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" }, { "description": "my new column", "mode": "NULLABLE", "name": "column4", "type": "STRING" } ]Per ulteriori informazioni sull'utilizzo dei file di schema JSON, vedi Specifica di un file di schema JSON.
Dopo aver aggiornato il file di schema, esegui il comando seguente per aggiornare lo schema della tabella. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il file di definizione dello schema scritto sulla tua macchina locale.
Ad esempio, inserisci il seguente comando per aggiornare la definizione dello schema di
mydataset.mytablenel tuo progetto predefinito. Il percorso del file dello schema sulla tua macchina locale è/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Chiama il metodo tables.patch e utilizza la proprietà schema per aggiungere colonne vuote alla definizione dello schema. Poiché il metodo tables.update sostituisce l'intera risorsa tabella, è preferibile il metodo tables.patch.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Aggiungi un nuovo oggetto SchemaField a una copia di Table.schema e poi sostituisci il valore della proprietà Table.schema con lo schema aggiornato.Aggiungere una colonna nidificata a una colonna RECORD
Oltre ad aggiungere nuove colonne allo schema di una tabella, puoi anche aggiungere nuove
colonne nidificate a una colonna RECORD. La procedura per aggiungere una nuova colonna nidificata è
simile a quella per aggiungere una nuova colonna.
Console
L'aggiunta di un nuovo campo nidificato a una colonna RECORD esistente non è
supportata dalla console Google Cloud .
SQL
L'aggiunta di un nuovo campo nidificato a una colonna RECORD esistente utilizzando un'istruzione SQL DDL non è supportata.
bq
Esegui il comando bq update e fornisci un file di schema JSON che aggiunga il campo nidificato alla definizione dello schema della colonna RECORD esistente. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il percorso del file dello schema JSON sul computer locale.
Quando specifichi uno schema incorporato, non puoi specificare la descrizione, la modalità e il tipo RECORD (STRUCT) della colonna. Per impostazione predefinita, tutte le modalità di colonna sono impostate su NULLABLE. Di conseguenza, se stai
aggiungendo una nuova colonna nidificata a un RECORD, devi
fornire un file di schema JSON.
Per aggiungere una colonna nidificata a un RECORD utilizzando un file di schema JSON:
Innanzitutto, esegui il comando
bq showcon il flag--schemae scrivi lo schema della tabella esistente in un file. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET.TABLE.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il file di definizione dello schema scritto sulla tua macchina locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytablein un file, inserisci il comando seguente.mydataset.mytablesi trova nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonApri il file dello schema in un editor di testo. Lo schema dovrebbe essere simile al seguente. In questo esempio,
column3è una colonna ripetuta nidificata. Le colonne nidificate sononested1enested2. L'arrayfieldselenca i campi nidificati incolumn3.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]Aggiungi la nuova colonna nidificata alla fine dell'array
fields. In questo esempio,nested3è la nuova colonna nidificata.[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "fields": [ { "mode": "NULLABLE", "name": "nested1", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested2", "type": "STRING" }, { "mode": "NULLABLE", "name": "nested3", "type": "STRING" } ], "mode": "REPEATED", "name": "column3", "type": "RECORD" } ]Per ulteriori informazioni sull'utilizzo dei file di schema JSON, vedi Specifica di un file di schema JSON.
Dopo aver aggiornato il file di schema, esegui il comando seguente per aggiornare lo schema della tabella. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il percorso del file dello schema JSON sul computer locale.
Ad esempio, inserisci il seguente comando per aggiornare la definizione dello schema di
mydataset.mytablenel tuo progetto predefinito. Il percorso del file dello schema sulla tua macchina locale è/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Chiama il metodo tables.patch e utilizza la proprietà schema per aggiungere le colonne nidificate alla definizione dello schema. Poiché il metodo tables.update sostituisce l'intera risorsa
della tabella, è preferibile il metodo tables.patch.
Aggiungere colonne quando sovrascrivi o accodi dati
Puoi aggiungere nuove colonne a una tabella esistente quando carichi i dati e scegli di sovrascrivere la tabella esistente. Quando sovrascrivi una tabella esistente, lo schema dei dati che stai caricando viene utilizzato per sovrascrivere lo schema della tabella esistente. Per informazioni sulla sovrascrittura di una tabella utilizzando un job di caricamento, consulta il documento per il formato dei dati:
Aggiungere colonne in un job di caricamento con accodamento
Puoi aggiungere colonne a una tabella quando aggiungi dati in un job di caricamento. Il nuovo schema è determinato da uno dei seguenti fattori:
- Rilevamento automatico (per file CSV e JSON)
- Uno schema specificato in un file di schema JSON (per file CSV e JSON)
- I dati di origine autodescrittivi per i file di esportazione Avro, ORC, Parquet e Datastore
Se specifichi lo schema in un file JSON, le nuove colonne devono essere definite al suo interno. Se mancano le nuove definizioni delle colonne, viene restituito un errore quando provi ad aggiungere i dati.
Quando aggiungi nuove colonne durante un'operazione di accodamento,
i valori nelle nuove colonne vengono impostati su NULL per le righe esistenti.
Per aggiungere una nuova colonna quando accodi dati a una tabella durante un job di caricamento, utilizza una delle seguenti opzioni:
bq
Utilizza il comando bq load per caricare i dati e specifica il flag --noreplace
per indicare che stai aggiungendo i dati a una tabella esistente.
Se i dati che stai aggiungendo sono in formato CSV o JSON delimitato da nuova riga,
specifica il flag --autodetect per utilizzare il rilevamento automatico dello schema
o fornisci lo schema in un file di schema JSON. Le colonne aggiunte possono essere
dedotte automaticamente dai file di esportazione Avro o Datastore.
Imposta il flag --schema_update_option su ALLOW_FIELD_ADDITION per indicare
che i dati che stai aggiungendo contengono nuove colonne.
Se la tabella che stai aggiungendo si trova in un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET.
(Facoltativo) Fornisci il flag --location e imposta il valore sulla tua
posizione.
Inserisci il comando load come segue:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Sostituisci quanto segue:
LOCATION: il nome della tua sede. 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 il file.bigqueryrc.FORMAT: il formato dello schema.NEWLINE_DELIMITED_JSON,CSV,AVRO,PARQUET,ORCoDATASTORE_BACKUP.PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella.TABLE: il nome della tabella che stai aggiungendo.PATH_TO_SOURCE: un URI Cloud Storage completo, un elenco di URI separati da virgole o il percorso di un file di dati sulla tua macchina locale.SCHEMA: il percorso di un file di schema JSON locale. Un file di schema è obbligatorio solo per i file CSV e JSON quando--autodetectnon è specificato. Gli schemi Avro e Datastore vengono dedotti dai dati di origine.
Esempi:
Inserisci il seguente comando per aggiungere un file di dati Avro locale, /tmp/mydata.avro, a mydataset.mytable utilizzando un job di caricamento. Poiché gli schemi
possono essere dedotti automaticamente dai dati Avro, non è necessario utilizzare
il flag --autodetect. mydataset si trova nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Inserisci il seguente comando per aggiungere un file di dati JSON delimitato da newline in Cloud Storage a mydataset.mytable utilizzando un job di caricamento. Il flag --autodetect
viene utilizzato per rilevare le nuove colonne. mydataset si trova nel tuo progetto
predefinito.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
Inserisci il seguente comando per aggiungere un file di dati JSON delimitato da newline in Cloud Storage a mydataset.mytable utilizzando un job di caricamento. Lo schema
contenente le nuove colonne è specificato in un file di schema JSON locale,
/tmp/myschema.json. mydataset si trova in myotherproject, non nel tuo progetto
predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
myotherproject:mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
API
Chiama il metodo jobs.insert. Configura un job load e imposta le seguenti proprietà:
- Fai riferimento ai tuoi dati in Cloud Storage utilizzando la proprietà
sourceUris. - Specifica il formato dei dati impostando la proprietà
sourceFormat. - Specifica lo schema nella proprietà
schema. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions. - Imposta la disposizione di scrittura della tabella di destinazione su
WRITE_APPENDutilizzando la proprietàwriteDisposition.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Aggiungere colonne in un job di accodamento di query
Puoi aggiungere colonne a una tabella quando aggiungi i risultati della query.
Quando aggiungi colonne utilizzando un'operazione di accodamento in un job di query, lo schema dei risultati della query viene utilizzato per aggiornare lo schema della tabella di destinazione. Tieni presente che non puoi eseguire query su una tabella in una posizione e scrivere i risultati in una tabella in un'altra posizione.
Per aggiungere una nuova colonna quando accodi dati a una tabella durante un job di query, seleziona una delle seguenti opzioni:
bq
Utilizza il comando bq query per eseguire query sui dati e specifica il
flag --destination_table per indicare la tabella a cui stai aggiungendo dati.
Per specificare che stai aggiungendo i risultati della query a una tabella di destinazione esistente, specifica il flag --append_table.
Imposta il flag --schema_update_option su ALLOW_FIELD_ADDITION per indicare
che i risultati della query che stai aggiungendo contengono nuove colonne.
Specifica il flag use_legacy_sql=false per utilizzare la sintassi GoogleSQL per la
query.
Se la tabella che stai aggiungendo si trova in un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET. Tieni presente che la tabella
che stai interrogando e la tabella di destinazione devono trovarsi nella stessa posizione.
(Facoltativo) Fornisci il flag --location e imposta il valore sulla tua
posizione.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
Sostituisci quanto segue:
LOCATION: il nome della tua sede. 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 il file.bigqueryrc. Tieni presente che non puoi aggiungere i risultati della query a una tabella in un'altra posizione.PROJECT_ID: il tuo ID progetto.dataset: il nome del set di dati che contiene la tabella che stai aggiungendo.TABLE: il nome della tabella che stai aggiungendo.QUERY: una query nella sintassi GoogleSQL.
Esempi:
Inserisci il seguente comando per eseguire query su mydataset.mytable nel progetto predefinito e per aggiungere i risultati della query a mydataset.mytable2 (anch'esso nel progetto predefinito).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Inserisci il seguente comando per eseguire query su mydataset.mytable nel progetto predefinito e per aggiungere i risultati della query a mydataset.mytable2 in myotherproject.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
Chiama il metodo jobs.insert. Configura un job query e imposta le seguenti proprietà:
- Specifica la tabella di destinazione utilizzando la proprietà
destinationTable. - Imposta la disposizione di scrittura della tabella di destinazione su
WRITE_APPENDutilizzando la proprietàwriteDisposition. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions. - Specifica la query GoogleSQL utilizzando la proprietà
query.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Modificare il nome di una colonna
Per rinominare una colonna in una tabella, utilizza l'istruzione DDL ALTER TABLE RENAME COLUMN. L'esempio seguente rinomina la colonna old_name in new_name su mytable:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
Per ulteriori
informazioni sulle istruzioni ALTER TABLE RENAME COLUMN, consulta
Dettagli DDL.
Modificare il tipo di dati di una colonna
La modifica del tipo di dati di una colonna non è supportata dalla console Google Cloud , dallo strumento a riga di comando bq o dall'API BigQuery. Se provi ad aggiornare una tabella applicando uno schema che specifica un nuovo tipo di dati per una colonna, viene restituito un errore.
Modificare il tipo di dati di una colonna con un'istruzione DDL
Puoi utilizzare GoogleSQL per apportare determinate modifiche al tipo di dati di una
colonna. Per ulteriori informazioni e un elenco completo delle conversioni dei tipi di dati supportati, consulta l'istruzione DDL ALTER COLUMN SET DATA TYPE.
L'esempio seguente crea una tabella con una colonna di tipo INT64, quindi
aggiorna il tipo a NUMERIC:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
L'esempio seguente crea una tabella con una colonna nidificata con due campi e
poi aggiorna il tipo di una delle colonne da INT a NUMERIC:
CREATE TABLE mydataset.mytable(s1 STRUCT<a INT64, b STRING>); ALTER TABLE mydataset.mytable ALTER COLUMN s1 SET DATA TYPE STRUCT<a NUMERIC, b STRING>;
Modificare i tipi di colonne nidificate
Per modifiche complesse dello schema nidificato, come la modifica di un campo all'interno di un array di
STRUCT, l'istruzione DDL ALTER TABLE non è supportata.
Come soluzione alternativa, puoi utilizzare l'istruzione CREATE OR REPLACE TABLE
con un'istruzione SELECT
per trasformare le modifiche allo schema nidificato.
L'esempio seguente mostra come trasformare una colonna all'interno di un array di
STRUCTS:
Considera una tabella samples.test con lo schema e i dati seguenti:
CREATE OR REPLACE TABLE samples.test(D STRUCT <L ARRAY<STRUCT<R STRING, U STRING, V STRING>>, F STRING>); INSERT INTO samples.test(D) VALUES (STRUCT([STRUCT("r1", "u1", "v1"), STRUCT("r2", "u2", "v2")], "f1"));
Il risultato è simile al seguente:
+----------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------+
Supponiamo che tu debba modificare il tipo di campo U all'interno dell'array nidificato di
STRUCT in STRUCT<W STRING>. La seguente istruzione SQL mostra come
eseguire questa operazione:
CREATE OR REPLACE TABLE samples.new_table AS SELECT STRUCT(ARRAY( SELECT STRUCT(tmp.R, STRUCT(tmp.U AS W) AS U, tmp.V) FROM UNNEST(t.D.L) AS tmp) AS L, t.D.F) AS D FROM samples.test AS t
Questa istruzione crea una nuova tabella, samples.new_table, con lo schema di destinazione.
La funzione UNNEST espande l'array di STRUCT all'interno di t.D.L. L'espressione STRUCT(tmp.U AS W) AS U crea la nuova STRUCT con il campo W, compilato con il valore del campo U originale. La tabella risultante,
samples.new_table, ha lo schema e i dati seguenti:
+----------------------------------------------------------------------------------------+
| D |
+----------------------------------------------------------------------------------------+
| {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} |
+----------------------------------------------------------------------------------------+
Eseguire il cast del tipo di dati di una colonna
Per modificare il tipo di dati di una colonna in un tipo convertibile, utilizza una query SQL per selezionare i dati della tabella, converti la colonna pertinente e sovrascrivi la tabella. Il casting e la sovrascrittura non sono consigliati per tabelle molto grandi perché richiedono una scansione completa della tabella.
L'esempio seguente mostra una query SQL che seleziona tutti i dati da
column_two e column_three in mydataset.mytable e converte column_one
da DATE a STRING. Il risultato della query viene utilizzato per sovrascrivere la tabella esistente. La tabella sovrascritta memorizza column_one come tipo di dati STRING.
Quando utilizzi CAST, una query può non riuscire se BigQuery non è in grado di eseguire il cast. Per informazioni dettagliate sulle regole di conversione in GoogleSQL, vedi
Conversione.
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente query per selezionare tutti i dati di
column_twoecolumn_threeinmydataset.mytablee per eseguire il cast dicolumn_onedaDATEaSTRING. La query utilizza un alias per trasmetterecolumn_onecon lo stesso nome.mydataset.mytablesi trova nel tuo progetto predefinito.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
Fai clic su Altro e seleziona Impostazioni query.
Nella sezione Destinazione, segui questi passaggi:
Seleziona Imposta una tabella di destinazione per i risultati della query.
In Nome progetto, lascia il valore impostato sul progetto predefinito. Questo è il progetto che contiene
mydataset.mytable.Per Set di dati, scegli
mydataset.Nel campo ID tabella, inserisci
mytable.Per Preferenza di scrittura per tabella di destinazione, seleziona Sovrascrivi tabella. Questa opzione sovrascrive
mytableutilizzando i risultati della query.
(Facoltativo) Scegli la posizione dei dati.
Per aggiornare le impostazioni, fai clic su Salva.
Fai clic su Esegui.
Al termine del job di query, il tipo di dati di
column_oneèSTRING.
bq
Inserisci il seguente comando bq query per selezionare tutti i dati da
column_two e column_three in mydataset.mytable e per eseguire il cast di
column_one da DATE a STRING. La query utilizza un alias per eseguire il cast
di column_one con lo stesso nome. mydataset.mytable si trova nel tuo progetto
predefinito.
I risultati della query vengono scritti in mydataset.mytable utilizzando il flag --destination_table e il flag --replace viene utilizzato per sovrascrivere mytable. Specifica il flag use_legacy_sql=false per utilizzare
la sintassi GoogleSQL.
(Facoltativo) Fornisci il flag --location e imposta il valore sulla tua
posizione.
bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=false \
'SELECT
column_two,
column_three,
CAST(column_one AS STRING) AS column_one
FROM
mydataset.mytable'
API
Per selezionare tutti i dati di column_two e column_three in
mydataset.mytable e per trasmettere column_one da DATE a STRING, chiama
il metodo jobs.insert
e configura un job query. (Facoltativo) Specifica la tua posizione nella proprietà
location della sezione jobReference.
La query SQL utilizzata nel job di query sarebbe SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable. La query utilizza un alias per eseguire il cast di column_one con lo stesso nome.
Per sovrascrivere mytable con i risultati della query, includi mydataset.mytable
nella proprietà configuration.query.destinationTable e specifica
WRITE_TRUNCATE nella proprietà configuration.query.writeDisposition.
Modificare la modalità di una colonna
L'unica modifica supportata che puoi apportare alla modalità di una colonna è
il passaggio da REQUIRED a NULLABLE. La modifica della modalità di una colonna da REQUIRED a NULLABLE è detta anche rilassamento della colonna. Puoi anche rilassare una
colonna quando carichi i dati per sovrascrivere una tabella esistente
o quando aggiungi dati a una tabella esistente. Non puoi modificare la modalità di una colonna
da NULLABLE a REQUIRED.
Crea una colonna NULLABLE in una tabella esistente
Per modificare la modalità di una colonna da REQUIRED a NULLABLE, seleziona una delle seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi seleziona un set di dati.
Fai clic su Panoramica > Tabelle e poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. Potresti dover scorrere per visualizzare questo pulsante.
Nella pagina Schema attuale, individua il campo che vuoi modificare.
Nell'elenco a discesa Modalità per quel campo, seleziona
NULLABLE.Per aggiornare le impostazioni, fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER COLUMN DROP NOT NULL.
L'esempio seguente modifica la modalità della colonna mycolumn da
REQUIRED a NULLABLE:
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
bq
Innanzitutto, esegui il comando
bq showcon il flag--schemae scrivi lo schema della tabella esistente in un file. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:PROJECT_ID:DATASET.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA_FILE: il file di definizione dello schema scritto sul tuo computer locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytablein un file, inserisci il comando seguente.mydataset.mytablesi trova nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.jsonApri il file dello schema in un editor di testo. Lo schema dovrebbe essere simile al seguente:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Modifica la modalità di una colonna esistente da
REQUIREDaNULLABLE. In questo esempio, la modalità percolumn1è meno restrittiva.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]Per ulteriori informazioni sull'utilizzo dei file di schema JSON, vedi Specifica di un file di schema JSON.
Dopo aver aggiornato il file di schema, esegui il comando seguente per aggiornare lo schema della tabella. Se la tabella che stai aggiornando si trova in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato:
PROJECT_ID:DATASET.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Sostituisci quanto segue:
PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiornando.TABLE: il nome della tabella che stai aggiornando.SCHEMA: il percorso del file dello schema JSON sul computer locale.
Ad esempio, inserisci il seguente comando per aggiornare la definizione dello schema di
mydataset.mytablenel tuo progetto predefinito. Il percorso del file dello schema sulla tua macchina locale è/tmp/myschema.json.bq update mydataset.mytable /tmp/myschema.json
API
Chiama tables.patch e
utilizza la proprietà schema per modificare una colonna REQUIRED in NULLABLE nella
definizione dello schema. Poiché il metodo tables.update sostituisce l'intera risorsa tabella, è preferibile il metodo tables.patch.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Sovrascrivi la proprietà Table.schema con un elenco di oggetti SchemaField con la proprietà mode impostata su'NULLABLE'
Crea una colonna NULLABLE con un job di caricamento di accodamento
Puoi rilassare la modalità di una colonna quando aggiungi dati a una tabella in un job di caricamento. Seleziona una delle seguenti opzioni in base al tipo di file:
- Quando aggiungi dati da file CSV e JSON, rilassa la modalità per le singole colonne specificando un file di schema JSON.
- Quando aggiungi dati da file Avro, ORC o Parquet, rilassa le colonne a
NULLnello schema e lascia che l'inferenza dello schema rilevi le colonne rilassate.
Per rilassare una colonna da REQUIRED a NULLABLE quando aggiungi dati a una tabella
durante un job di caricamento, seleziona una delle seguenti opzioni:
Console
Non puoi rilassare la modalità di una colonna utilizzando la console Google Cloud .
bq
Utilizza il comando bq load per caricare i dati e specifica il flag --noreplace
per indicare che stai aggiungendo i dati a una tabella esistente.
Se i dati che stai aggiungendo sono in formato CSV o JSON delimitato da nuova riga,
specifica le colonne rilassate in un file di schema JSON locale o utilizza il
flag --autodetect per utilizzare il rilevamento dello schema
per rilevare le colonne rilassate nei dati di origine.
Le colonne rilassate possono essere dedotte automaticamente dai file Avro, ORC e Parquet. Il rilassamento delle colonne non si applica alle aggiunte
dell'esportazione di Datastore. Le colonne delle tabelle create caricando i file di esportazione di Datastore
sono sempre NULLABLE.
Imposta il flag --schema_update_option su ALLOW_FIELD_RELAXATION per
indicare che i dati che stai aggiungendo contengono colonne rilassate.
Se la tabella che stai aggiungendo si trova in un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET.
(Facoltativo) Fornisci il flag --location e imposta il valore sulla tua
posizione.
Inserisci il comando load come segue:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Sostituisci quanto segue:
LOCATION: il nome della tua sede. 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 il file.bigqueryrc.FORMAT:NEWLINE_DELIMITED_JSON,CSV,PARQUET,ORCoAVRO. I fileDATASTORE_BACKUPnon richiedono l'allentamento delle colonne. Le colonne delle tabelle create dai file di esportazione di Datastore sono sempreNULLABLE.PROJECT_ID: il tuo ID progetto.dataset è il nome del set di dati che contiene la tabella.TABLE: il nome della tabella che stai aggiungendo.PATH_TO_SOURCE: un URI Cloud Storage completo, un elenco di URI separati da virgole o il percorso di un file di dati sulla tua macchina locale.SCHEMA: il percorso di un file di schema JSON locale. Questa opzione viene utilizzata solo per i file CSV e JSON. Le colonne rilassate vengono dedotte automaticamente dai file Avro.
Esempi:
Inserisci il seguente comando per aggiungere un file di dati Avro locale, /tmp/mydata.avro, a mydataset.mytable utilizzando un job di caricamento. Poiché le colonne
rilassate possono essere dedotte automaticamente dai dati Avro, non è necessario
specificare un file di schema. mydataset si trova nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Inserisci il seguente comando per aggiungere i dati da un file JSON
delimitato da newline in Cloud Storage a mydataset.mytable utilizzando un job di caricamento. Lo schema contenente le colonne rilassate si trova in un file di schema JSON locale: /tmp/myschema.json. mydataset si trova nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
Inserisci il seguente comando per aggiungere i dati in un file CSV sulla tua macchina
locale a mydataset.mytable utilizzando un job di caricamento. Il comando utilizza il rilevamento automatico dello schema per rilevare le colonne rilassate nei dati di origine. mydataset
si trova in myotherproject, non nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Chiama il metodo jobs.insert. Configura un job load e imposta le seguenti proprietà:
- Fai riferimento ai tuoi dati in Cloud Storage utilizzando la proprietà
sourceUris. - Specifica il formato dei dati impostando la proprietà
sourceFormat. - Specifica lo schema nella proprietà
schema. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions. - Imposta la disposizione di scrittura della tabella di destinazione su
WRITE_APPENDutilizzando la proprietàwriteDisposition.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Node.js.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Rendi tutte le colonne NULLABLE con un job di accodamento
Puoi rilassare tutte le colonne di una tabella quando aggiungi i risultati della query. Puoi
rilassare tutti i campi obbligatori nella tabella di destinazione impostando il
flag --schema_update_option su ALLOW_FIELD_RELAXATION. Non puoi rilassare
le singole colonne in una tabella di destinazione utilizzando un'aggiunta di query. Per rilassare
singole colonne con un job di caricamento e accodamento, vedi
Rendere una colonna NULLABLE con un job di accodamento.
Per rilassare tutte le colonne quando aggiungi i risultati della query a una tabella di destinazione, seleziona una delle seguenti opzioni:
Console
Non puoi rilassare la modalità di una colonna utilizzando la console Google Cloud .
bq
Utilizza il comando bq query per eseguire query sui dati e specifica il
flag --destination_table per indicare la tabella a cui stai aggiungendo dati.
Per specificare che stai aggiungendo i risultati della query a una tabella di destinazione esistente, specifica il flag --append_table.
Imposta il flag --schema_update_option su ALLOW_FIELD_RELAXATION per
indicare che tutte le colonne REQUIRED nella tabella che stai aggiungendo devono essere
modificate in NULLABLE.
Specifica il flag use_legacy_sql=false per utilizzare la sintassi GoogleSQL per la
query.
Se la tabella che stai aggiungendo si trova in un set di dati in un progetto diverso da quello predefinito, aggiungi l'ID progetto al nome del set di dati nel seguente formato: PROJECT_ID:DATASET.
(Facoltativo) Fornisci il flag --location e imposta il valore sulla tua
posizione.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
Sostituisci quanto segue:
LOCATION: il nome della tua sede. 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 il file.bigqueryrc.PROJECT_ID: il tuo ID progetto.DATASET: il nome del set di dati che contiene la tabella che stai aggiungendo.TABLE: il nome della tabella che stai aggiungendo.QUERY: una query nella sintassi GoogleSQL.
Esempi:
Inserisci la seguente query di comando mydataset.mytable nel tuo progetto predefinito per aggiungere i risultati della query a mydataset.mytable2 (anch'esso nel tuo progetto predefinito). Il comando modifica tutte le colonne REQUIRED nella
tabella di destinazione in NULLABLE.
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Inserisci la seguente query di comando mydataset.mytable nel tuo progetto predefinito e per aggiungere i risultati della query a mydataset.mytable2 in myotherproject. Il comando modifica tutte le colonne REQUIRED nella
tabella di destinazione in NULLABLE.
bq query \
--destination_table myotherproject:mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
API
Chiama il metodo jobs.insert. Configura un job query e imposta le seguenti proprietà:
- Specifica la tabella di destinazione utilizzando la proprietà
destinationTable. - Imposta la disposizione di scrittura della tabella di destinazione su
WRITE_APPENDutilizzando la proprietàwriteDisposition. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions. - Specifica la query GoogleSQL utilizzando la proprietà
query.
Vai
Prima di provare questo esempio, segui le istruzioni di configurazione di Go nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python nella guida rapida di BigQuery per l'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura le Credenziali predefinite dell'applicazione. Per saperne di più, vedi Configurare l'autenticazione per le librerie client.
Modificare il valore predefinito di una colonna
Per modificare il valore predefinito di una colonna, seleziona una delle seguenti opzioni:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Se non vedi il riquadro a sinistra, fai clic su Espandi riquadro a sinistra per aprirlo.
Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi seleziona il set di dati.
Fai clic su Panoramica > Tabelle e poi su una tabella.
Fai clic sulla scheda Schema.
Fai clic su Modifica schema. Potresti dover scorrere per visualizzare questo pulsante.
Nella pagina Schema attuale, individua il campo di primo livello che vuoi modificare.
Inserisci il valore predefinito per il campo.
Fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER COLUMN SET DEFAULT.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
Modificare la descrizione di una colonna
Per modificare la descrizione di una colonna, seleziona una delle seguenti opzioni:
Console
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Nel riquadro Explorer, espandi il progetto, fai clic su Set di dati e poi seleziona un set di dati.
Fai clic su Panoramica > Tabelle e poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. Potresti dover scorrere per visualizzare questo pulsante.
Nella pagina Schema attuale, individua il campo che vuoi modificare.
Inserisci la descrizione del campo.
Fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER COLUMN SET OPTIONS.
Nella console Google Cloud , vai alla pagina BigQuery.
Nell'editor di query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
Fai clic su Esegui.
Per saperne di più su come eseguire le query, consulta Eseguire una query interattiva.
Gemini
Puoi generare descrizioni delle colonne con Gemini in BigQuery utilizzando gli approfondimenti sui dati. Gli approfondimenti sui dati sono un modo automatico per esplorare, comprendere e curare i dati.
Per ulteriori informazioni sugli approfondimenti sui dati, inclusi i passaggi di configurazione, i ruoli IAM richiesti e le best practice per migliorare l'accuratezza degli approfondimenti generati, consulta Generare approfondimenti sui dati in BigQuery.
Nella console Google Cloud , vai alla pagina BigQuery.
Nel riquadro a sinistra, fai clic su Explorer:

Nel riquadro Explorer, espandi il progetto e il set di dati, quindi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Genera.
Gemini genera descrizioni delle colonne e insight sulla tabella. L'inserimento delle informazioni richiede alcuni minuti. Puoi visualizzare gli approfondimenti generati nella scheda Approfondimenti della tabella.
Per modificare e salvare le descrizioni delle colonne generate:
Fai clic su Visualizza descrizioni delle colonne.
Nella sezione Descrizioni delle colonne, fai clic su Salva nello schema.
Le descrizioni delle colonne generate vengono inserite nel campo Nuova descrizione per ogni colonna.
Modifica le descrizioni delle colonne in base alle esigenze e poi fai clic su Salva.
Le descrizioni delle colonne vengono aggiornate immediatamente.
Per chiudere il riquadro Anteprima descrizioni, fai clic su Chiudi.
Eliminare una colonna
Puoi eliminare una colonna da una tabella esistente utilizzando l'istruzione DDL ALTER TABLE DROP COLUMN.
L'istruzione non libera immediatamente lo spazio di archiviazione associato
alla colonna eliminata. Per scoprire di più sull'impatto sullo spazio di archiviazione quando rilasci una
colonna sullo spazio di archiviazione, consulta i dettagli dell'istruzione
ALTER TABLE DROP COLUMN.
Esistono due opzioni per recuperare immediatamente spazio di archiviazione:
Sovrascrivere una tabella con una query
SELECT * EXCEPT:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );Esporta i dati in Cloud Storage, elimina le colonne indesiderate e poi carica i dati in una nuova tabella con lo schema corretto.