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 Data Definition Language (DDL). Queste istruzioni non comportano addebiti.
Puoi modificare uno schema di tabella in tutti i modi descritti in questa pagina exporting i dati della tabella in Cloud Storage per poi caricarli in una nuova tabella con la definizione dello schema modificata. I job di caricamento ed esportazione di BigQuery sono gratuiti, ma ti vengono addebitati dei costi per l'archiviazione dei dati esportati in Cloud Storage. Le seguenti sezioni descrivono altri modi per eseguire vari tipi di modifiche allo schema.
Aggiungi una colonna
Puoi aggiungere colonne alla definizione dello schema di una tabella esistente utilizzando una delle seguenti opzioni:
- Aggiungi una nuova colonna vuota.
- Sovrascrivi una tabella con un job di caricamento o query.
- Aggiungi dati a una tabella con un job di caricamento o query.
Qualsiasi colonna aggiunta deve rispettare le regole di BigQuery per i nomi delle colonne. Per ulteriori informazioni sulla creazione dei componenti dello schema, consulta Specifica di uno schema.
Aggiungi 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 nello strumento a riga di comando API o bq causa un errore. Tuttavia, puoi creare una
colonna REQUIRED
nidificata come parte di un nuovo campo RECORD
.
Puoi aggiungere colonne REQUIRED
solo quando crei una tabella durante il caricamento dei dati o quando crei una tabella vuota con una definizione di schema.
Per aggiungere colonne vuote alla definizione dello schema di una tabella:
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. È possibile che sia necessario scorrere per visualizzare questo pulsante.
Nella pagina Schema corrente, in Nuovi campi, fai clic su Aggiungi campo.
- In Nome, digita il nome della colonna.
- In Tipo, scegli il tipo di dati.
- In corrispondenza di Modalità,
scegli
NULLABLE
oREPEATED
.
Quando hai finito di aggiungere colonne, fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER TABLE ADD COLUMN
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'Editor query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Fai clic su
Esegui.
Per ulteriori informazioni 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il percorso del file di schema JSON sulla tua macchina locale.
Quando specifichi uno schema incorporato, non puoi specificare la descrizione, la modalità e il tipo di colonna RECORD
(STRUCT
). Tutte le modalità colonna sono impostate automaticamente su NULLABLE
. Di conseguenza, se
aggiungi una nuova colonna nidificata a un elemento RECORD
, devi
fornire un file di schema JSON.
Se tenti di aggiungere colonne utilizzando una definizione di schema in linea, devi
fornire l'intera definizione di schema, comprese le nuove colonne. Poiché
non è possibile specificare le modalità colonna utilizzando una definizione di schema in linea, l'aggiornamento
cambia tutte le colonne REPEATED
esistenti 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, invia il comando
bq show
con il flag--schema
e scrivi lo schema della tabella esistente su 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il file di definizione dello schema scritto nella tua macchina locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytable
in un file, inserisci il seguente comando.mydataset.mytable
è nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Apri il file dello schema in un editor di testo. Lo schema dovrebbe avere il seguente aspetto:
[ { "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 tenti di aggiungere nuove colonne in un altro punto dell'array, viene restituito il seguente errore:
BigQuery error in update operation: Precondition Failed
.Utilizzando un file JSON, puoi specificare descrizioni, modalità
NULLABLE
oREPEATED
e tipiRECORD
per le nuove colonne. Ad esempio, utilizzando la definizione dello schema nel passaggio precedente, il nuovo array JSON sarà simile al seguente. In questo esempio, viene aggiunta una nuova colonnaNULLABLE
denominatacolumn4
.column4
include 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 maggiori informazioni sull'utilizzo dei file di schema JSON, consulta Specifica di un file di schema JSON.
Dopo aver aggiornato il file dello 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il file di definizione dello schema scritto nella tua macchina locale.
Ad esempio, inserisci il comando seguente per aggiornare la definizione dello schema di
mydataset.mytable
nel progetto predefinito. Il percorso del file di 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 della tabella, è preferibile il metodo tables.patch
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Aggiungi un nuovo oggetto SchemaField a una copia di Table.schema e sostituisci il valore della proprietà Table.schema con lo schema aggiornato.Aggiungi 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 mediante un'istruzione DDL SQL 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il percorso del file di schema JSON sulla tua macchina locale.
Quando specifichi uno schema incorporato, non puoi specificare la descrizione, la modalità e il tipo di colonna RECORD
(STRUCT
). Tutte le modalità colonna sono impostate automaticamente su NULLABLE
. Di conseguenza, se
aggiungi una nuova colonna nidificata a un elemento RECORD
, devi
fornire un file di schema JSON.
Per aggiungere una colonna nidificata a un RECORD
utilizzando un file di schema JSON:
Innanzitutto, invia il comando
bq show
con il flag--schema
e scrivi lo schema della tabella esistente su 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il file di definizione dello schema scritto nella tua macchina locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytable
in un file, inserisci il seguente comando.mydataset.mytable
è nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Apri 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 sononested1
enested2
. L'arrayfields
elenca i campi nidificati all'interno dicolumn3
.[ { "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 maggiori informazioni sull'utilizzo dei file di schema JSON, consulta Specifica di un file di schema JSON.
Dopo aver aggiornato il file dello 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il percorso del file di schema JSON sulla tua macchina locale.
Ad esempio, inserisci il comando seguente per aggiornare la definizione dello schema di
mydataset.mytable
nel progetto predefinito. Il percorso del file di 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 aggiungi dati
Puoi aggiungere nuove colonne a una tabella esistente quando carichi dati al suo interno 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 relativo al formato dei dati:
Aggiungere colonne in un job di caricamento di accodamento
Puoi aggiungere colonne a una tabella quando aggiungi dati in un job di caricamento. Il nuovo schema è determinato da uno dei seguenti criteri:
- Rilevamento automatico (per file CSV e JSON)
- Uno schema specificato in un file JSON di schema (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 della colonna, 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 aggiungi 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 oppure fornisci lo schema in un file JSON di schema. 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
località.
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 località. 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
,ORC
oDATASTORE_BACKUP
.PROJECT_ID
: il tuo ID progetto.DATASET
: il nome del set di dati che contiene la tabella.TABLE
: il nome della tabella da aggiungere.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 JSON di schema locale. Un file di schema è obbligatorio solo per i file CSV e JSON quando--autodetect
non è specificato. Gli schemi Avro e Datastore vengono dedotti dai dati di origine.
Esempi:
Inserisci il comando seguente 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
è nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Inserisci il comando seguente per aggiungere un file di dati JSON delimitato da nuova riga in Cloud Storage a mydataset.mytable
utilizzando un job di caricamento. Il flag --autodetect
viene utilizzato per rilevare le nuove colonne. mydataset
è 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 comando seguente per aggiungere un file di dati JSON delimitato da nuova riga in Cloud Storage a mydataset.mytable
utilizzando un job di caricamento. Lo schema contenente le nuove colonne viene specificato in un file di schema JSON locale, /tmp/myschema.json
. mydataset
si trova in myotherproject
, non è il 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
Richiama 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_APPEND
utilizzando la proprietàwriteDisposition
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Aggiungi colonne in un job di aggiunta 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 località.
Per aggiungere una nuova colonna quando aggiungi 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 da aggiungere.
Per indicare 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 aggiungi 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 su cui stai eseguendo la query e quella di destinazione devono trovarsi nella stessa località.
(Facoltativo) Fornisci il flag --location
e imposta il valore sulla tua
località.
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 località. 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 contenente la tabella che stai aggiungendo.TABLE
: il nome della tabella da aggiungere.QUERY
: una query con la sintassi GoogleSQL.
Esempi:
Inserisci il seguente comando per eseguire una query su mydataset.mytable
nel progetto predefinito e per aggiungere i risultati della query a mydataset.mytable2
(anche 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 comando seguente per eseguire una query su mydataset.mytable
nel progetto predefinito e 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
Richiama 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_APPEND
utilizzando la proprietàwriteDisposition
. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions
. - Specifica la query GoogleSQL utilizzando la proprietà
query
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Modificare il nome di una colonna
Per rinominare una colonna di una tabella, utilizza
l'istruzione DDL ALTER TABLE RENAME COLUMN
. Nell'esempio seguente la colonna old_name
viene rinominata in new_name
il giorno mytable
:
ALTER TABLE mydataset.mytable
RENAME COLUMN old_name TO new_name;
Per ulteriori informazioni sulle istruzioni ALTER TABLE RENAME COLUMN
, consulta i 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 tenti di 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 per 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
e poi aggiorna il tipo in 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, poi aggiorna il tipo di una delle colonne da INT
a NUMERIC
:
CREATE TABLE mydataset.mytable(s1 STRUCT); ALTER TABLE mydataset.mytable ALTER COLUMN s1 SET DATA TYPE STRUCT;
Trasmettere il tipo di dati di una colonna
Per cambiare il tipo di dati di una colonna in un tipo castable, utilizza una query SQL per selezionare i dati della tabella, trasmettere la colonna pertinente e sovrascrivere la tabella. La trasmissione e la sovrascrittura non sono consigliate per tabelle molto grandi, perché richiedono una scansione completa della tabella.
L'esempio seguente mostra una query SQL che seleziona tutti i dati di
column_two
e column_three
in mydataset.mytable
e trasmette column_one
da DATE
a STRING
. Il risultato della query viene utilizzato per sovrascrivere la tabella esistente. La tabella sovrascritta archivia column_one
come tipo di dati STRING
.
Quando utilizzi CAST
, una query può avere esito negativo se BigQuery non è in grado di eseguire la trasmissione. Per maggiori dettagli sulle regole di trasmissione in GoogleSQL, consulta
Trasmissione.
Console
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'Editor query, inserisci la query seguente per selezionare tutti i dati di
column_two
ecolumn_three
inmydataset.mytable
e per trasmetterecolumn_one
daDATE
aSTRING
. La query utilizza un alias per trasmetterecolumn_one
con lo stesso nome.mydataset.mytable
è 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, procedi nel seguente modo:
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
.In Preferenza di scrittura della tabella di destinazione, seleziona Sovrascrivi tabella. Questa opzione sovrascrive
mytable
utilizzando i risultati della query.
Se vuoi, scegli la posizione dei tuoi 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 di
column_two
e column_three
in mydataset.mytable
e trasmettere
column_one
da DATE
a STRING
. La query utilizza un alias per trasmettere column_one
con lo stesso nome. mydataset.mytable
è 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.
Se vuoi, fornisci il flag --location
e imposta il valore sulla tua località.
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 trasmettere column_one
da DATE
a STRING
, chiama il metodo jobs.insert
e configura un job query
. (Facoltativo) Specifica la tua località nella
proprietà location
nella sezione jobReference
.
La query SQL utilizzata nel job di query sarà SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable
. La query utilizza un alias per trasmettere 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
è quella da REQUIRED
a NULLABLE
. La modifica della modalità di una colonna da REQUIRED
a NULLABLE
è anche chiamata rilassamento della colonna. Puoi anche ridurre una colonna quando carichi dati per sovrascrivere una tabella esistente o quando aggiungi dati a una tabella esistente. Non puoi cambiare la modalità di una colonna
da NULLABLE
a REQUIRED
.
Crea una colonna NULLABLE
in una tabella esistente
Per cambiare la modalità di una colonna da REQUIRED
a NULLABLE
, seleziona una delle
seguenti opzioni:
Console
Vai alla pagina BigQuery.
Nel riquadro Explorer, espandi il progetto e il set di dati, poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. È possibile che sia necessario scorrere per visualizzare questo pulsante.
Nella pagina Schema corrente, individua il campo che vuoi modificare.
Nell'elenco a discesa Modalità per il campo in questione, seleziona
NULLABLE
.Per aggiornare le impostazioni, fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER COLUMN DROP NOT NULL
.
L'esempio seguente cambia la modalità della colonna mycolumn
da
REQUIRED
a NULLABLE
:
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'Editor query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
bq
Innanzitutto, invia il comando
bq show
con il flag--schema
e scrivi lo schema della tabella esistente su 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA_FILE
: il file di definizione dello schema scritto sulla tua macchina locale.
Ad esempio, per scrivere la definizione dello schema di
mydataset.mytable
in un file, inserisci il seguente comando.mydataset.mytable
è nel tuo progetto predefinito.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Apri il file dello schema in un editor di testo. Lo schema dovrebbe avere il seguente aspetto:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Cambia la modalità di una colonna esistente da
REQUIRED
aNULLABLE
. In questo esempio, la modalità percolumn1
è confortevole.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Per saperne di più sull'utilizzo dei file di schema JSON, consulta Specifica di un file di schema JSON.
Dopo aver aggiornato il file dello 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 contenente la tabella che stai aggiornando.TABLE
: il nome della tabella che stai aggiornando.SCHEMA
: il percorso del file di schema JSON sulla tua macchina locale.
Ad esempio, inserisci il comando seguente per aggiornare la definizione dello schema di
mydataset.mytable
nel progetto predefinito. Il percorso del file di 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 della tabella, è preferibile il metodo tables.patch
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta 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 aggiuntivo
Puoi rendere più flessibile 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, riduci la modalità per le singole colonne specificando un file di schema JSON.
- Quando aggiungi dati da file Avro, ORC o Parquet, rilassa le colonne in
NULL
nello schema e lascia che l'inferenza dello schema rilevi le colonne ridotte.
Per ridurre 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 ridurre 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 confortevoli in un file di schema JSON locale oppure utilizza il flag --autodetect
per utilizzare il rilevamento di schema per rilevare colonne confortevoli nei dati di origine.
Le colonne confortevoli possono essere dedotte automaticamente da file Avro, ORC e Parquet. Il rilassamento della colonna non si applica alle aggiunte
delle esportazioni di Datastore. Le colonne nelle tabelle create caricando i file di esportazione Datastore sono sempre NULLABLE
.
Imposta il flag --schema_update_option
su ALLOW_FIELD_RELAXATION
per indicare che i dati che stai aggiungendo contengono colonne ridotte.
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
località.
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 località. 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
,ORC
oAVRO
. I fileDATASTORE_BACKUP
non richiedono l'allentamento della colonna. Le colonne nelle 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 JSON di schema locale. Questa opzione viene utilizzata solo per i file CSV e JSON. Le colonne confortevoli vengono dedotte automaticamente dai file Avro.
Esempi:
Inserisci il comando seguente 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
è nel tuo progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Inserisci il comando seguente per aggiungere i dati di un file JSON delimitato da una nuova riga in Cloud Storage a mydataset.mytable
utilizzando un job di caricamento. Lo schema contenente le colonne confortevoli è in un file di schema JSON locale: /tmp/myschema.json
. mydataset
è 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 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 colonne semplici nei dati di origine. mydataset
si trova in myotherproject
, non nel progetto predefinito.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Richiama 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_APPEND
utilizzando la proprietàwriteDisposition
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Node.js
Prima di provare questo esempio, segui le istruzioni di configurazione di Node.js disponibili nella guida rapida di BigQuery sull'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 Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Imposta tutte le colonne come NULLABLE
con un job di aggiunta
Puoi rendere più flessibili 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 allentare singole colonne in una tabella di destinazione utilizzando un'aggiunta di query. Per ridurre
le singole colonne con un job di caricamento di aggiunta, consulta
Creare una colonna NULLABLE
con un job di aggiunta.
Per ridurre tutte le colonne quando aggiungi i risultati della query a una tabella di destinazione, seleziona una delle seguenti opzioni:
Console
Non puoi ridurre 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 da aggiungere.
Per indicare 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 REQUIRED
colonne della 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
località.
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 località. 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 contenente la tabella che stai aggiungendo.TABLE
: il nome della tabella da aggiungere.QUERY
: una query con la sintassi GoogleSQL.
Esempi:
Inserisci la seguente query di comando mydataset.mytable
nel progetto predefinito per aggiungere i risultati della query a mydataset.mytable2
(anche nel 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 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
Richiama 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_APPEND
utilizzando la proprietàwriteDisposition
. - Specifica l'opzione di aggiornamento dello schema utilizzando la proprietà
schemaUpdateOptions
. - Specifica la query GoogleSQL utilizzando la proprietà
query
.
Go
Prima di provare questo esempio, segui le istruzioni di configurazione di Go disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Go.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Java
Prima di provare questo esempio, segui le istruzioni di configurazione di Java disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Java.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta Configurare l'autenticazione per le librerie client.
Python
Prima di provare questo esempio, segui le istruzioni di configurazione di Python disponibili nella guida rapida di BigQuery sull'utilizzo delle librerie client. Per saperne di più, consulta la documentazione di riferimento dell'API BigQuery Python.
Per eseguire l'autenticazione in BigQuery, configura Credenziali predefinite dell'applicazione. Per maggiori informazioni, consulta 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 Explorer, espandi il progetto e il set di dati, poi seleziona la tabella.
Nel riquadro dei dettagli, fai clic sulla scheda Schema.
Fai clic su Modifica schema. È possibile che sia necessario scorrere per visualizzare questo pulsante.
Nella pagina Schema corrente, individua il campo di primo livello che vuoi modificare.
Inserisci il valore predefinito per il campo in questione.
Fai clic su Salva.
SQL
Utilizza l'istruzione DDL ALTER COLUMN SET DEFAULT
.
Nella console Google Cloud, vai alla pagina BigQuery.
Nell'Editor query, inserisci la seguente istruzione:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Fai clic su
Esegui.
Per ulteriori informazioni su come eseguire le query, consulta Eseguire una query interattiva.
Elimina 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 saperne di più sull'impatto sull'archiviazione di una colonna, consulta i dettagli dell'istruzione ALTER TABLE DROP COLUMN
.
Esistono due opzioni per recuperare immediatamente lo spazio di archiviazione:
- Sovrascrivi una tabella con una query
SELECT * EXCEPT
. - Esporta i dati in Cloud Storage, elimina le colonne indesiderate e poi caricali in una nuova tabella con lo schema corretto.