Modificar esquemas de tabelas
Este documento descreve como modificar as definições do esquema para tabelas do BigQuery existentes.
Pode fazer a maioria das modificações do esquema descritas neste documento através de declarações de linguagem de definição de dados (LDD) SQL. Estes extratos não geram cobranças.
Pode modificar um esquema de tabela de todas as formas descritas nesta página exportando os dados da tabela para o Cloud Storage e, em seguida, carregando os dados para uma nova tabela com a definição do esquema modificado. As tarefas de carregamento e exportação do BigQuery são gratuitas, mas incorre em custos pelo armazenamento dos dados exportados no Cloud Storage. As secções seguintes descrevem outras formas de fazer vários tipos de modificações do esquema.
Adicione uma coluna
Pode adicionar colunas à definição do esquema de uma tabela existente através de uma das seguintes opções:
- Adicione uma nova coluna vazia.
- Substitua uma tabela por uma tarefa de carregamento ou de consulta.
- Anexe dados a uma tabela com uma tarefa de carregamento ou consulta.
Qualquer coluna que adicionar tem de cumprir as regras do BigQuery para nomes de colunas. Para mais informações sobre como criar componentes de esquema, consulte o artigo Especificar um esquema.
Adicione uma coluna vazia
Se adicionar novas colunas a um esquema de tabela existente, as colunas têm de ser do tipo NULLABLE
ou REPEATED
. Não pode adicionar uma coluna REQUIRED
a um esquema de tabela existente. A adição de uma coluna REQUIRED
a um esquema de tabela existente na API ou na ferramenta de linhas de comando bq provoca um erro. No entanto, pode criar uma coluna REQUIRED
aninhada como parte de um novo campo RECORD
.
As colunas REQUIRED
só podem ser adicionadas quando
cria uma tabela durante o carregamento de dados ou quando cria uma tabela vazia com uma
definição de esquema.
Para adicionar colunas vazias à definição do esquema de uma tabela:
Consola
Na Trusted Cloud consola, aceda à página do BigQuery.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique no separador Esquema.
Clique em Editar esquema. Pode ter de deslocar a página para ver este botão.
Na página Esquema atual, em Novos campos, clique em Adicionar campo.
- Em Nome, escreva o nome da coluna.
- Para Tipo, escolha o tipo de dados.
- Para Modo,
escolha
NULLABLE
ouREPEATED
.
Quando terminar de adicionar colunas, clique em Guardar.
SQL
Use a
ALTER TABLE ADD COLUMN
declaração DDL:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER TABLE mydataset.mytable ADD COLUMN new_column STRING;
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Emita o comando bq update
e forneça um ficheiro de esquema JSON. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o caminho para o ficheiro de esquema JSON no seu computador local.
Quando especifica um esquema inline, não pode especificar a descrição, o modo e o tipo de coluna RECORD
(STRUCT
). Todos os modos de coluna têm NULLABLE
como predefinição. Como resultado, se estiver a adicionar uma nova coluna aninhada a um RECORD
, tem de fornecer um ficheiro de esquema JSON.
Se tentar adicionar colunas através de uma definição de esquema inline, tem de fornecer a definição de esquema completa, incluindo as novas colunas. Uma vez que não pode especificar modos de coluna através de uma definição de esquema inline, a atualização altera qualquer coluna REPEATED
existente para NULLABLE
, o que produz o seguinte erro: BigQuery error in update
operation: Provided Schema does not match Table
PROJECT_ID:dataset.table. Field field has changed mode
from REPEATED to NULLABLE.
O método preferencial para adicionar colunas a uma tabela existente através da ferramenta de linhas de comando bq é fornecer um ficheiro de esquema JSON.
Para adicionar colunas vazias ao esquema de uma tabela através de um ficheiro de esquema JSON:
Primeiro, execute o comando
bq show
com a flag--schema
e escreva o esquema da tabela existente num ficheiro. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:PROJECT_ID:DATASET
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o ficheiro de definição do esquema escrito no seu computador local.
Por exemplo, para escrever a definição do esquema de
mydataset.mytable
num ficheiro, introduza o seguinte comando.mydataset.mytable
está no seu projeto predefinido.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abra o ficheiro de esquema num editor de texto. O esquema deve ter o seguinte aspeto:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Adicione as novas colunas ao final da definição do esquema. Se tentar adicionar novas colunas noutro local da matriz, é devolvido o seguinte erro:
BigQuery error in update operation: Precondition Failed
.Através de um ficheiro JSON, pode especificar descrições, modos
NULLABLE
ouREPEATED
e tiposRECORD
para novas colunas. Por exemplo, usando a definição do esquema do passo anterior, a nova matriz JSON teria o seguinte aspeto. Neste exemplo, é adicionada uma nova colunaNULLABLE
com o nomecolumn4
.column4
inclui uma descrição.[ { "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" } ]
Para mais informações sobre como trabalhar com ficheiros de esquema JSON, consulte o artigo Especificar um ficheiro de esquema JSON.
Depois de atualizar o ficheiro de esquema, execute o seguinte comando para atualizar o esquema da tabela. Se a tabela que está a atualizar estiver num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o ficheiro de definição do esquema escrito no seu computador local.
Por exemplo, introduza o seguinte comando para atualizar a definição do esquema de
mydataset.mytable
no seu projeto predefinido. O caminho para o ficheiro de esquema na sua máquina local é/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Chame o método tables.patch
e use a propriedade schema
para adicionar colunas vazias à definição do esquema. Uma vez que o método tables.update
substitui todo o recurso de tabela, o método tables.patch
é o preferível.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Adicione uma coluna aninhada a uma coluna RECORD
Além de adicionar novas colunas ao esquema de uma tabela, também pode adicionar novas colunas aninhadas a uma coluna RECORD
. O processo de adição de uma nova coluna aninhada é
semelhante ao processo de adição de uma nova coluna.
Consola
A adição de um novo campo aninhado a uma coluna RECORD
existente não é suportada pela consola Trusted Cloud .
SQL
Não é suportada a adição de um novo campo aninhado a uma coluna RECORD
existente através de uma declaração SQL DDL.
bq
Emita o comando bq update
e faculte um ficheiro de esquema JSON que adicione o campo aninhado à definição do esquema da coluna RECORD
existente. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
.
bq update PROJECT_ID:DATASET.TABLE SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o caminho para o ficheiro de esquema JSON no seu computador local.
Quando especifica um esquema inline, não pode especificar a descrição, o modo e o tipo de coluna RECORD
(STRUCT
). Todos os modos de coluna têm NULLABLE
como predefinição. Como resultado, se estiver a adicionar uma nova coluna aninhada a um RECORD
, tem de fornecer um ficheiro de esquema JSON.
Para adicionar uma coluna aninhada a um RECORD
através de um ficheiro de esquema JSON:
Primeiro, execute o comando
bq show
com a flag--schema
e escreva o esquema da tabela existente num ficheiro. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:PROJECT_ID:DATASET.TABLE
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o ficheiro de definição do esquema escrito no seu computador local.
Por exemplo, para escrever a definição do esquema de
mydataset.mytable
num ficheiro, introduza o seguinte comando.mydataset.mytable
está no seu projeto predefinido.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abra o ficheiro de esquema num editor de texto. O esquema deve ter o seguinte aspeto. Neste exemplo,
column3
é uma coluna repetida aninhada. As colunas aninhadas sãonested1
enested2
. A matrizfields
apresenta os campos aninhados emcolumn3
.[ { "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" } ]
Adicione a nova coluna aninhada ao final da matriz
fields
. Neste exemplo,nested3
é a nova coluna aninhada.[ { "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" } ]
Para mais informações sobre como trabalhar com ficheiros de esquema JSON, consulte o artigo Especificar um ficheiro de esquema JSON.
Depois de atualizar o ficheiro de esquema, execute o seguinte comando para atualizar o esquema da tabela. Se a tabela que está a atualizar estiver num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o caminho para o ficheiro de esquema JSON no seu computador local.
Por exemplo, introduza o seguinte comando para atualizar a definição do esquema de
mydataset.mytable
no seu projeto predefinido. O caminho para o ficheiro de esquema na sua máquina local é/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Chame o método tables.patch
e use a propriedade schema
para adicionar as colunas aninhadas à definição do esquema. Uma vez que o método tables.update
substitui todo o recurso de tabela, o método tables.patch
é o preferido.
Adicione colunas quando substitui ou anexa dados
Pode adicionar novas colunas a uma tabela existente quando carrega dados na mesma e opta por substituir a tabela existente. Quando substitui uma tabela existente, o esquema dos dados que está a carregar é usado para substituir o esquema da tabela existente. Para obter informações sobre como substituir uma tabela através de uma tarefa de carregamento, consulte o documento para o formato dos seus dados:
Adicione colunas num trabalho de carregamento de anexação
Pode adicionar colunas a uma tabela quando lhe acrescenta dados num trabalho de carregamento. O novo esquema é determinado por uma das seguintes opções:
- Deteção automática (para ficheiros CSV e JSON)
- Um esquema especificado num ficheiro de esquema JSON (para ficheiros CSV e JSON)
- Os dados de origem autodescritivos para ficheiros de exportação Avro, ORC, Parquet e Datastore
Se especificar o esquema num ficheiro JSON, as novas colunas têm de ser definidas no mesmo. Se as novas definições de colunas estiverem em falta, é devolvido um erro quando tenta anexar os dados.
Quando adiciona novas colunas durante uma operação de anexação, os valores nas novas colunas são definidos como NULL
para as linhas existentes.
Para adicionar uma nova coluna quando acrescenta dados a uma tabela durante uma tarefa de carregamento, use uma das seguintes opções:
bq
Use o comando bq load
para carregar os dados e especifique a flag --noreplace
para indicar que está a anexar os dados a uma tabela existente.
Se os dados que está a acrescentar estiverem no formato CSV ou JSON delimitado por newline,
especifique a flag --autodetect
para usar a deteção automática de esquemas
ou forneça o esquema num ficheiro de esquema JSON. As colunas adicionadas podem ser inferidas automaticamente a partir de ficheiros de exportação Avro ou Datastore.
Defina a flag --schema_update_option
como ALLOW_FIELD_ADDITION
para indicar que os dados que está a acrescentar contêm novas colunas.
Se a tabela que está a acrescentar estiver num conjunto de dados num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
Introduza o comando load
da seguinte forma:
bq --location=LOCATION load \ --noreplace \ --autodetect \ --schema_update_option=ALLOW_FIELD_ADDITION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Substitua o seguinte:
LOCATION
: o nome da sua localização. A flag--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag comoasia-northeast1
. Pode definir um valor predefinido para a localização através do ficheiro.bigqueryrc.FORMAT
: o formato do esquema.NEWLINE_DELIMITED_JSON
,CSV
,AVRO
,PARQUET
,ORC
ouDATASTORE_BACKUP
.PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela.TABLE
: o nome da tabela que está a anexar.PATH_TO_SOURCE
: um URI do Cloud Storage> totalmente qualificado, uma lista de URIs separados por vírgulas ou o caminho para um ficheiro de dados na sua máquina local.SCHEMA
: o caminho para um ficheiro de esquema JSON local. Um ficheiro de esquema só é necessário para ficheiros CSV e JSON quando--autodetect
não está especificado. Os esquemas Avro e Datastore são inferidos a partir dos dados de origem.
Exemplos:
Introduza o seguinte comando para anexar um ficheiro de dados Avro local,
/tmp/mydata.avro
, a mydataset.mytable
através de uma tarefa de carregamento. Como os esquemas podem ser inferidos automaticamente a partir de dados Avro, não precisa de usar a flag --autodetect
. mydataset
está no seu projeto predefinido.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Introduza o seguinte comando para anexar um ficheiro de dados JSON delimitado por novas linhas no
Google Cloud Storage a mydataset.mytable
através de uma tarefa de carregamento. A --autodetect
flag é usada para detetar as novas colunas. mydataset
está no seu projeto
predefinido.
bq load \
--noreplace \
--autodetect \
--schema_update_option=ALLOW_FIELD_ADDITION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
Introduza o seguinte comando para anexar um ficheiro de dados JSON delimitado por novas linhas no
Google Cloud Storage a mydataset.mytable
através de uma tarefa de carregamento. O esquema
que contém as novas colunas é especificado num ficheiro de esquema JSON local,
/tmp/myschema.json
. mydataset
está em myotherproject
e não no seu projeto
predefinido.
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
Chame o método jobs.insert
. Configure uma tarefa load
e defina as seguintes propriedades:
- Faça referência aos seus dados no Cloud Storage através da propriedade
sourceUris
. - Especifique o formato de dados definindo a propriedade
sourceFormat
. - Especifique o esquema na propriedade
schema
. - Especifique a opção de atualização do esquema através da propriedade
schemaUpdateOptions
. - Defina a disposição de escrita da tabela de destino para
WRITE_APPEND
usando a propriedadewriteDisposition
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Adicione colunas num trabalho de anexação de consultas
Pode adicionar colunas a uma tabela quando lhe anexa resultados de consultas.
Quando adiciona colunas através de uma operação de anexação num trabalho de consulta, o esquema dos resultados da consulta é usado para atualizar o esquema da tabela de destino. Tenha em atenção que não pode consultar uma tabela numa localização e escrever os resultados numa tabela noutra localização.
Para adicionar uma nova coluna quando acrescenta dados a uma tabela durante uma tarefa de consulta, selecione uma das seguintes opções:
bq
Use o comando bq query
para consultar os seus dados e especifique a flag --destination_table
para indicar a tabela à qual está a anexar.
Para especificar que está a anexar resultados da consulta a uma tabela de destino existente, especifique a flag --append_table
.
Defina a flag --schema_update_option
como ALLOW_FIELD_ADDITION
para indicar que os resultados da consulta que está a anexar contêm novas colunas.
Especifique a flag use_legacy_sql=false
para usar a sintaxe GoogleSQL para a consulta.
Se a tabela que está a acrescentar estiver num conjunto de dados num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
. Tenha em atenção que a tabela que está a consultar e a tabela de destino têm de estar na mesma localização.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_ADDITION \ --use_legacy_sql=false \ 'QUERY'
Substitua o seguinte:
LOCATION
: o nome da sua localização. A flag--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag comoasia-northeast1
. Pode definir um valor predefinido para a localização através do ficheiro.bigqueryrc. Tenha em atenção que não pode anexar resultados de consultas a uma tabela noutra localização.PROJECT_ID
: o ID do seu projeto.dataset
: o nome do conjunto de dados que contém a tabela que está a anexar.TABLE
: o nome da tabela que está a anexar.QUERY
: uma consulta na sintaxe GoogleSQL.
Exemplos:
Introduza o seguinte comando para consultar mydataset.mytable
no seu projeto predefinido e anexar os resultados da consulta a mydataset.mytable2
(também no seu projeto predefinido).
bq query \
--destination_table mydataset.mytable2 \
--append_table \
--schema_update_option=ALLOW_FIELD_ADDITION \
--use_legacy_sql=false \
'SELECT
column1,column2
FROM
mydataset.mytable'
Introduza o seguinte comando para consultar mydataset.mytable
no seu projeto predefinido e anexar os resultados da consulta a mydataset.mytable2
em 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
Chame o método jobs.insert
. Configure uma tarefa query
e defina as seguintes propriedades:
- Especifique a tabela de destino através da propriedade
destinationTable
. - Defina a disposição de escrita da tabela de destino para
WRITE_APPEND
usando a propriedadewriteDisposition
. - Especifique a opção de atualização do esquema através da propriedade
schemaUpdateOptions
. - Especifique a consulta GoogleSQL através da propriedade
query
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Altere o nome de uma coluna
Para mudar o nome de uma coluna numa tabela, use a
ALTER TABLE RENAME COLUMN
declaração DDL. O exemplo seguinte muda o nome da coluna old_name
para new_name
em mytable
:
ALTER TABLE mydataset.mytable RENAME COLUMN old_name TO new_name;
Para mais
informações sobre os extratos ALTER TABLE RENAME COLUMN
, consulte os
detalhes de DDL.
Altere o tipo de dados de uma coluna
A alteração do tipo de dados de uma coluna não é suportada pela Trusted Cloud consola, pela ferramenta de linha de comandos bq nem pela API BigQuery. Se tentar atualizar uma tabela aplicando um esquema que especifique um novo tipo de dados para uma coluna, é devolvido um erro.
Altere o tipo de dados de uma coluna com uma declaração DDL
Pode usar o GoogleSQL para fazer determinadas alterações ao tipo de dados de uma coluna. Para mais informações e uma lista completa das conversões de tipos de dados suportadas, consulte a
ALTER COLUMN SET DATA TYPE
declaração DDL.
O exemplo seguinte cria uma tabela com uma coluna do tipo INT64
e, em seguida, atualiza o tipo para NUMERIC
:
CREATE TABLE mydataset.mytable(c1 INT64); ALTER TABLE mydataset.mytable ALTER COLUMN c1 SET DATA TYPE NUMERIC;
O exemplo seguinte cria uma tabela com uma coluna aninhada com dois campos e, em seguida, atualiza o tipo de uma das colunas de INT
para 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>;
Modifique os tipos de colunas aninhadas
Para alterações complexas de esquemas aninhados, como alterar um campo numa matriz de
STRUCTs, a declaração DDL ALTER TABLE
não é suportada.
Como solução alternativa, pode usar a declaração CREATE OR REPLACE TABLE
com uma declaração SELECT
para transformar as alterações do esquema aninhado.
O exemplo seguinte demonstra como transformar uma coluna numa matriz de
STRUCTS
:
Considere uma tabela samples.test
com o seguinte esquema e dados:
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"));
O resultado tem um aspeto semelhante ao seguinte:
+----------------------------------------------------------------------------+ | D | +----------------------------------------------------------------------------+ | {"L":[{"R":"r1","U":"u1","V":"v1"},{"R":"r2","U":"u2","V":"v2"}],"F":"f1"} | +----------------------------------------------------------------------------+
Suponhamos que precisa de alterar o tipo de campo U
na matriz aninhada de STRUCT
s para STRUCT<W STRING>
. A seguinte declaração SQL demonstra como
conseguir isto:
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
Esta declaração cria uma nova tabela, samples.new_table
, com o esquema de destino.
A função UNNEST
expande a matriz de STRUCTs em t.D.L
. A expressão STRUCT(tmp.U AS W) AS U
constrói o novo STRUCT com o campo W, preenchido com o valor do campo U
original. A tabela resultante,
samples.new_table
, tem o seguinte esquema e dados:
+----------------------------------------------------------------------------------------+ | D | +----------------------------------------------------------------------------------------+ | {"L":[{"R":"r1","U":{"W":"u1"},"V":"v1"},{"R":"r2","U":{"W":"u2"},"V":"v2"}],"F":"f1"} | +----------------------------------------------------------------------------------------+
Converter o tipo de dados de uma coluna
Para alterar o tipo de dados de uma coluna para um tipo convertível, use uma consulta SQL para selecionar os dados da tabela, converter a coluna relevante e substituir a tabela. A transmissão e a substituição não são recomendadas para tabelas muito grandes, porque requerem uma análise completa da tabela.
O exemplo seguinte mostra uma consulta SQL que seleciona todos os dados de
column_two
e column_three
em mydataset.mytable
e converte column_one
de DATE
para STRING
. O resultado da consulta é usado para substituir a tabela existente. A tabela substituída armazena column_one
como um tipo de dados STRING
.
Quando usa CAST
, uma consulta pode falhar se o BigQuery não conseguir
executar a conversão. Para ver detalhes sobre as regras de conversão no GoogleSQL, consulte o artigo
Conversão.
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte consulta para selecionar todos os dados de
column_two
ecolumn_three
emmydataset.mytable
e para convertercolumn_one
deDATE
emSTRING
. A consulta usa um alias para convertercolumn_one
com o mesmo nome.mydataset.mytable
está no seu projeto predefinido.SELECT column_two, column_three, CAST(column_one AS STRING) AS column_one FROM mydataset.mytable;
Clique em Mais e selecione Definições de consulta.
Na secção Destino, faça o seguinte:
Selecione Definir uma tabela de destino para os resultados da consulta.
Para Nome do projeto, deixe o valor definido para o seu projeto predefinido. Este é o projeto que contém
mydataset.mytable
.Para Conjunto de dados, escolha
mydataset
.No campo ID da tabela, introduza
mytable
.Em Preferência de escrita da tabela de destino, selecione Substituir tabela. Esta opção substitui
mytable
pelos resultados da consulta.
Opcionalmente, escolha a localização dos seus dados.
Para atualizar as definições, clique em Guardar.
Clique em
Executar.Quando a tarefa de consulta estiver concluída, o tipo de dados de
column_one
éSTRING
.
bq
Introduza o comando bq query
seguinte para selecionar todos os dados de
column_two
e column_three
em mydataset.mytable
e para transmitir
column_one
de DATE
para STRING
. A consulta usa um alias para converter o tipo de dados column_one
com o mesmo nome. mydataset.mytable
está no seu projeto
predefinido.
Os resultados da consulta são escritos em mydataset.mytable
através da flag --destination_table
, e a flag --replace
é usada para substituir mytable
. Especifique o sinalizador use_legacy_sql=false
para usar a sintaxe do GoogleSQL.
Opcionalmente, forneça o sinalizador --location
e defina o valor para a sua localização.
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
Para selecionar todos os dados de column_two
e column_three
em
mydataset.mytable
e transmitir column_one
de DATE
para STRING
, chame o método jobs.insert
e configure uma tarefa query
. Opcionalmente, especifique a sua localização na propriedade location
na secção jobReference
.
A consulta SQL usada na tarefa de consulta seria SELECT column_two,
column_three, CAST(column_one AS STRING) AS column_one FROM
mydataset.mytable
. A consulta usa um alias para converter column_one
com o mesmo nome.
Para substituir mytable
pelos resultados da consulta, inclua mydataset.mytable
na propriedade configuration.query.destinationTable
e especifique
WRITE_TRUNCATE
na propriedade configuration.query.writeDisposition
.
Altere o modo de uma coluna
A única modificação suportada que pode fazer ao modo de uma coluna é alterá-lo de REQUIRED
para NULLABLE
. A alteração do modo de uma coluna de REQUIRED
para NULLABLE
também é denominada relaxamento da coluna. Também pode relaxar uma coluna quando carrega dados para substituir uma tabela existente ou quando anexa dados a uma tabela existente. Não pode alterar o modo de uma coluna de NULLABLE
para REQUIRED
.
Crie uma coluna NULLABLE
numa tabela existente
Para alterar o modo de uma coluna de REQUIRED
para NULLABLE
, selecione uma das seguintes opções:
Consola
Aceda à página do BigQuery.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique no separador Esquema.
Clique em Editar esquema. Pode ter de deslocar a página para ver este botão.
Na página Esquema atual, localize o campo que quer alterar.
Na lista pendente Modo desse campo, selecione
NULLABLE
.Para atualizar as definições, clique em Guardar.
SQL
Use a
ALTER COLUMN DROP NOT NULL
declaração DDL.
O exemplo seguinte altera o modo da coluna mycolumn
de
REQUIRED
para NULLABLE
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER TABLE mydataset.mytable ALTER COLUMN mycolumn DROP NOT NULL;
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Primeiro, execute o comando
bq show
com a flag--schema
e escreva o esquema da tabela existente num ficheiro. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:PROJECT_ID:DATASET
.bq show \ --schema \ --format=prettyjson \ PROJECT_ID:DATASET.TABLE > SCHEMA_FILE
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA_FILE
: o ficheiro de definição do esquema escrito no seu computador local.
Por exemplo, para escrever a definição do esquema de
mydataset.mytable
num ficheiro, introduza o seguinte comando.mydataset.mytable
está no seu projeto predefinido.bq show \ --schema \ --format=prettyjson \ mydataset.mytable > /tmp/myschema.json
Abra o ficheiro de esquema num editor de texto. O esquema deve ter o seguinte aspeto:
[ { "mode": "REQUIRED", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Altere o modo de uma coluna existente de
REQUIRED
paraNULLABLE
. Neste exemplo, o modo paracolumn1
é flexível.[ { "mode": "NULLABLE", "name": "column1", "type": "STRING" }, { "mode": "REQUIRED", "name": "column2", "type": "FLOAT" }, { "mode": "REPEATED", "name": "column3", "type": "STRING" } ]
Para mais informações sobre como trabalhar com ficheiros de esquema JSON, consulte o artigo Especificar um ficheiro de esquema JSON.
Depois de atualizar o ficheiro de esquema, execute o seguinte comando para atualizar o esquema da tabela. Se a tabela que está a atualizar estiver num projeto diferente do projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato:
PROJECT_ID:DATASET
.bq update PROJECT_ID:DATASET.TABLE SCHEMA
Substitua o seguinte:
PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a atualizar.TABLE
: o nome da tabela que está a atualizar.SCHEMA
: o caminho para o ficheiro de esquema JSON no seu computador local.
Por exemplo, introduza o seguinte comando para atualizar a definição do esquema de
mydataset.mytable
no seu projeto predefinido. O caminho para o ficheiro de esquema na sua máquina local é/tmp/myschema.json
.bq update mydataset.mytable /tmp/myschema.json
API
Chame tables.patch
e use a propriedade schema
para alterar uma coluna REQUIRED
para NULLABLE
na definição do esquema. Uma vez que o método tables.update
substitui o recurso de tabela completo, o método tables.patch
é preferível.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
'NULLABLE'
Crie uma coluna NULLABLE
com uma tarefa de carregamento de anexação
Pode relaxar o modo de uma coluna quando anexa dados a uma tabela num trabalho de carregamento. Selecione uma das seguintes opções com base no tipo de ficheiro:
- Quando acrescenta dados de ficheiros CSV e JSON, relaxe o modo para colunas individuais especificando um ficheiro de esquema JSON.
- Quando acrescenta dados de ficheiros Avro, ORC ou Parquet, relaxe as colunas no esquema e permita que a inferência de esquemas detete as colunas relaxadas.
NULL
Para relaxar uma coluna de REQUIRED
para NULLABLE
quando anexa dados a uma tabela
durante uma tarefa de carregamento, selecione uma das seguintes opções:
Consola
Não pode relaxar o modo de uma coluna através da Trusted Cloud consola.
bq
Use o comando bq load
para carregar os dados e especifique a flag --noreplace
para indicar que está a anexar os dados a uma tabela existente.
Se os dados que está a anexar estiverem no formato CSV ou JSON delimitado por nova linha,
especifique as colunas flexíveis num ficheiro de esquema JSON local ou use a flag
--autodetect
para usar a deteção de esquemas
para descobrir colunas flexíveis nos dados de origem.
As colunas relaxadas podem ser inferidas automaticamente a partir de ficheiros Avro, ORC e Parquet. O relaxamento de colunas não se aplica a anexos de exportação do Datastore. As colunas nas tabelas criadas através do carregamento de ficheiros de exportação do Datastore são sempre NULLABLE
.
Defina a flag --schema_update_option
como ALLOW_FIELD_RELAXATION
para indicar que os dados que está a acrescentar contêm colunas flexíveis.
Se a tabela que está a acrescentar estiver num conjunto de dados num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
Introduza o comando load
da seguinte forma:
bq --location=LOCATION load \ --noreplace \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --source_format=FORMAT \ PROJECT_ID:DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Substitua o seguinte:
LOCATION
: o nome da sua localização. A flag--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag comoasia-northeast1
. Pode definir um valor predefinido para a localização através do ficheiro.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
,CSV
,PARQUET
,ORC
ouAVRO
. Os ficheirosDATASTORE_BACKUP
não requerem a flexibilização de colunas. As colunas nas tabelas criadas a partir de ficheiros de exportação do Datastore são sempreNULLABLE
.PROJECT_ID
: o ID do seu projeto.dataset é o nome do conjunto de dados que contém a tabela.
TABLE
: o nome da tabela à qual está a anexar dados.PATH_TO_SOURCE
: um URI do Cloud Storage> totalmente qualificado, uma lista de URIs separados por vírgulas ou o caminho para um ficheiro de dados na sua máquina local.SCHEMA
: o caminho para um ficheiro de esquema JSON local. Esta opção é usada apenas para ficheiros CSV e JSON. As colunas flexíveis são inferidas automaticamente a partir de ficheiros Avro.
Exemplos:
Introduza o seguinte comando para anexar um ficheiro de dados Avro local,
/tmp/mydata.avro
, a mydataset.mytable
através de uma tarefa de carregamento. Uma vez que as colunas flexíveis podem ser inferidas automaticamente a partir de dados Avro, não precisa de especificar um ficheiro de esquema. mydataset
está no seu projeto predefinido.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=AVRO \
mydataset.mytable \
/tmp/mydata.avro
Introduza o seguinte comando para anexar dados de um ficheiro JSON delimitado por novas linhas no Cloud Storage a mydataset.mytable
através de uma tarefa de carregamento. O esquema que contém as colunas flexíveis está num ficheiro de esquema JSON local: /tmp/myschema.json
. mydataset
está no seu projeto predefinido.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
/tmp/myschema.json
Introduza o seguinte comando para anexar dados num ficheiro CSV no seu computador local mydataset.mytable
usando uma tarefa de carregamento. O comando usa a deteção automática do esquema para descobrir colunas flexíveis nos dados de origem. mydataset
está em myotherproject
e não no seu projeto predefinido.
bq load \
--noreplace \
--schema_update_option=ALLOW_FIELD_RELAXATION \
--source_format=CSV \
--autodetect \
myotherproject:mydataset.mytable \
mydata.csv
API
Chame o método jobs.insert
. Configure uma tarefa load
e defina as seguintes propriedades:
- Faça referência aos seus dados no Cloud Storage através da propriedade
sourceUris
. - Especifique o formato de dados definindo a propriedade
sourceFormat
. - Especifique o esquema na propriedade
schema
. - Especifique a opção de atualização do esquema através da propriedade
schemaUpdateOptions
. - Defina a disposição de escrita da tabela de destino para
WRITE_APPEND
usando a propriedadewriteDisposition
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Node.js
Antes de experimentar este exemplo, siga as Node.jsinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Node.js BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Torne todas as colunas NULLABLE
com uma tarefa de anexação
Pode relaxar todas as colunas numa tabela quando lhe anexa resultados de consultas. Pode
relaxar todos os campos obrigatórios na tabela de destino definindo a
flag --schema_update_option
como ALLOW_FIELD_RELAXATION
. Não pode relaxar colunas individuais numa tabela de destino através de uma anexação de consulta. Para relaxar
colunas individuais com uma tarefa de anexação de carregamento, consulte
Crie uma coluna NULLABLE
com uma tarefa de anexação.
Para relaxar todas as colunas quando acrescenta resultados de consultas a uma tabela de destino, selecione uma das seguintes opções:
Consola
Não pode relaxar o modo de uma coluna através da Trusted Cloud consola.
bq
Use o comando bq query
para consultar os seus dados e especifique a flag --destination_table
para indicar a tabela à qual está a anexar.
Para especificar que está a anexar resultados da consulta a uma tabela de destino existente, especifique a flag --append_table
.
Defina a flag --schema_update_option
como ALLOW_FIELD_RELAXATION
para indicar que todas as colunas REQUIRED
na tabela que está a anexar devem ser alteradas para NULLABLE
.
Especifique a flag use_legacy_sql=false
para usar a sintaxe GoogleSQL para a consulta.
Se a tabela que está a acrescentar estiver num conjunto de dados num projeto diferente do seu projeto predefinido, adicione o ID do projeto ao nome do conjunto de dados no seguinte formato: PROJECT_ID:DATASET
.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
bq --location=LOCATION query \ --destination_table PROJECT_ID:DATASET.TABLE \ --append_table \ --schema_update_option=ALLOW_FIELD_RELAXATION \ --use_legacy_sql=false \ 'QUERY'
Substitua o seguinte:
LOCATION
: o nome da sua localização. A flag--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, defina o valor da flag comoasia-northeast1
. Pode definir um valor predefinido para a localização através do ficheiro.bigqueryrc.PROJECT_ID
: o ID do seu projeto.DATASET
: o nome do conjunto de dados que contém a tabela que está a anexar.TABLE
: o nome da tabela que está a anexar.QUERY
: uma consulta na sintaxe GoogleSQL.
Exemplos:
Introduza a seguinte consulta de comando mydataset.mytable
no seu projeto predefinido para anexar os resultados da consulta a mydataset.mytable2
(também no seu projeto predefinido). O comando altera todas as colunas REQUIRED
na tabela de destino para 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'
Introduza a seguinte consulta de comando mydataset.mytable
no seu projeto predefinido e para anexar os resultados da consulta a mydataset.mytable2
em myotherproject
. O comando altera todas as colunas REQUIRED
na tabela de destino para 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
Chame o método jobs.insert
. Configure uma tarefa query
e defina as seguintes propriedades:
- Especifique a tabela de destino através da propriedade
destinationTable
. - Defina a disposição de escrita da tabela de destino para
WRITE_APPEND
usando a propriedadewriteDisposition
. - Especifique a opção de atualização do esquema através da propriedade
schemaUpdateOptions
. - Especifique a consulta GoogleSQL através da propriedade
query
.
Go
Antes de experimentar este exemplo, siga as Goinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Go BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Java
Antes de experimentar este exemplo, siga as Javainstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Java BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Python
Antes de experimentar este exemplo, siga as Pythoninstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Python BigQuery documentação de referência.
Para se autenticar no BigQuery, configure as Credenciais padrão da aplicação. Para mais informações, consulte o artigo Configure a autenticação para bibliotecas de cliente.
Antes de executar exemplos de código, defina a variável GOOGLE_CLOUD_UNIVERSE_DOMAIN
environment
como s3nsapis.fr
.
Altere o valor predefinido de uma coluna
Para alterar o valor predefinido de uma coluna, selecione uma das seguintes opções:
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique no separador Esquema.
Clique em Editar esquema. Pode ter de deslocar a página para ver este botão.
Na página Esquema atual, localize o campo de nível superior que quer alterar.
Introduza o valor predefinido para esse campo.
Clique em Guardar.
SQL
Use a
ALTER COLUMN SET DEFAULT
declaração DDL.
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET DEFAULT default_expression;
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Altere a descrição de uma coluna
Para alterar a descrição de uma coluna, selecione uma das seguintes opções:
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique no separador Esquema.
Clique em Editar esquema. Pode ter de deslocar a página para ver este botão.
Na página Esquema atual, localize o campo que quer alterar.
Introduza a descrição desse campo.
Clique em Guardar.
SQL
Use a
ALTER COLUMN SET OPTIONS
declaração DDL.
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
ALTER TABLE mydataset.mytable ALTER COLUMN column_name SET OPTIONS (description = 'This is a column description.');
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
Gemini
Pode gerar descrições de colunas com o Gemini no BigQuery usando estatísticas de dados. As estatísticas de dados são uma forma automática de explorar, compreender e organizar os seus dados.
Para mais informações sobre as estatísticas de dados, incluindo os passos de configuração, as funções do IAM necessárias e as práticas recomendadas para melhorar a precisão das estatísticas geradas, consulte o artigo Gere estatísticas de dados no BigQuery.
Na Trusted Cloud consola, aceda à página BigQuery.
No painel Explorador, expanda o projeto e o conjunto de dados e, de seguida, selecione a tabela.
No painel de detalhes, clique no separador Esquema.
Clique em Gerar.
O Gemini gera descrições de colunas e estatísticas sobre a tabela. Demora alguns minutos até que as informações sejam preenchidas. Pode ver as estatísticas geradas no separador Estatísticas da tabela.
Para editar e guardar as descrições de colunas geradas, faça o seguinte:
Clique em Ver descrições das colunas.
Na secção Descrições das colunas, clique em Guardar no esquema.
As descrições das colunas geradas são preenchidas no campo Nova descrição para cada coluna.
Edite as descrições das colunas conforme necessário e, de seguida, clique em Guardar.
As descrições das colunas são atualizadas imediatamente.
Para fechar o painel Pré-visualizar descrições, clique em
Fechar.
Elimine uma coluna
Pode eliminar uma coluna de uma tabela existente através da
ALTER TABLE DROP COLUMN
declaração DDL.
A declaração não liberta imediatamente o armazenamento associado à coluna
eliminada. Para saber mais sobre o impacto no armazenamento quando elimina uma coluna no armazenamento, consulte os ALTER TABLE DROP COLUMN
detalhes da declaração.
Existem duas opções para reclamar imediatamente o armazenamento:
Substitua uma tabela com uma consulta
SELECT * EXCEPT
:CREATE OR REPLACE TABLE mydataset.mytable AS ( SELECT * EXCEPT (column_to_delete) FROM mydataset.mytable );
Exporte os dados para o Cloud Storage, elimine as colunas indesejadas e, em seguida, carregue os dados para uma nova tabela com o esquema correto.