Usar a deteção automática de esquemas
Deteção automática do esquema
A deteção automática de esquemas permite ao BigQuery inferir o esquema para dados CSV, JSON ou do Google Sheets. A deteção automática de esquemas está disponível quando carrega dados para o BigQuery e quando consulta uma origem de dados externa.
Quando a deteção automática está ativada, o BigQuery infere o tipo de dados de cada coluna. O BigQuery seleciona um ficheiro aleatório na origem de dados
e analisa até às primeiras 500 linhas de dados para usar como amostra representativa.
Em seguida, o BigQuery examina cada campo e tenta atribuir um tipo de dados a esse campo com base nos valores no exemplo. Se todas as linhas numa coluna estiverem vazias, a deteção automática usa o tipo de dados STRING
para a coluna.
Se não ativar a deteção automática de esquemas para dados CSV, JSON ou do Google Sheets, tem de fornecer o esquema manualmente quando criar a tabela.
Não tem de ativar a deteção automática de esquemas para ficheiros Avro, Parquet, ORC, de exportação do Firestore ou de exportação do Datastore. Estes formatos de ficheiros são autodescritivos, pelo que o BigQuery infere automaticamente o esquema da tabela a partir dos dados de origem. Para ficheiros Parquet, Avro e Orc, pode fornecer opcionalmente um esquema explícito para substituir o esquema inferido.
Pode ver o esquema detetado para uma tabela das seguintes formas:
- Use a Trusted Cloud consola.
- Use o comando
bq show
da ferramenta de linhas de comando bq.
Quando o BigQuery deteta esquemas, pode, em raras ocasiões, alterar o nome de um campo para o tornar compatível com a sintaxe do GoogleSQL.
Para obter informações sobre conversões de tipos de dados, consulte o seguinte:
- Conversão do tipo de dados ao carregar dados do Datastore
- Conversão do tipo de dados ao carregar dados do Firestore
- Conversões de Avro
- Conversões de parquet
- Conversões de ORC
Carregar dados através da deteção automática de esquemas
Para ativar a deteção automática do esquema ao carregar dados, use uma destas abordagens:
- Na Trusted Cloud consola, na secção Esquema, para Detetar automaticamente, selecione a opção Esquema e parâmetros de entrada.
- Na ferramenta de linhas de comando bq, use o comando
bq load
com o parâmetro--autodetect
.
Quando a deteção automática de esquemas está ativada, o BigQuery faz uma tentativa de melhor esforço para inferir automaticamente o esquema para ficheiros CSV e JSON.
A lógica de deteção automática infere os tipos de campos de esquema lendo até às primeiras 500 linhas de dados. As linhas iniciais são ignoradas se a flag --skip_leading_rows
estiver presente. Os tipos de campos baseiam-se nas linhas com mais campos.
Por conseguinte, a deteção automática deve funcionar como esperado, desde que exista, pelo menos, uma linha de dados com valores em todas as colunas/campos.
A deteção automática do esquema não é usada com ficheiros Avro, ficheiros Parquet, ficheiros ORC, ficheiros de exportação do Firestore ou ficheiros de exportação do Datastore. Quando carrega estes ficheiros para o BigQuery, o esquema da tabela é automaticamente obtido dos dados de origem autodescritivos.
Para usar a deteção automática de esquemas quando carrega dados JSON ou CSV:
Consola
Na Trusted Cloud consola, aceda à página do BigQuery.
No painel Explorador, expanda o projeto e selecione um conjunto de dados.
Expanda a opção
Ações e clique em Abrir.No painel de detalhes, clique em Criar tabela
.Na página Criar tabela, na secção Origem:
- Em Criar tabela a partir de, selecione o tipo de origem pretendido.
No campo de origem, procure o ficheiro/contentor do Cloud Storage ou introduza o URI do Cloud Storage. Tenha em atenção que não pode incluir vários URIs na Trusted Cloud consola, mas oscaracteres universais são suportados. O contentor do Cloud Storage tem de estar na mesma localização que o conjunto de dados que contém a tabela que está a criar.
Em Formato de ficheiro, selecione CSV ou JSON.
Na página Criar tabela, na secção Destino:
Em Nome do conjunto de dados, escolha o conjunto de dados adequado.
No campo Nome da tabela, introduza o nome da tabela que está a criar.
Verifique se o Tipo de tabela está definido como Tabela nativa.
Clique em Criar tabela.
bq
Emita o comando bq load
com o parâmetro --autodetect
.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
O comando seguinte carrega um ficheiro através da deteção automática do esquema:
bq --location=LOCATION load \ --autodetect \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE
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 predefinir um valor para a localização através do ficheiro.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
ouCSV
.DATASET
: o conjunto de dados que contém a tabela para a qual está a carregar dados.TABLE
: o nome da tabela para a qual está a carregar dados.PATH_TO_SOURCE
: é a localização do ficheiro CSV ou JSON.
Exemplos:
Introduza o seguinte comando para carregar myfile.csv
do seu computador local para uma tabela denominada mytable
, que está armazenada num conjunto de dados denominado mydataset
.
bq load --autodetect --source_format=CSV mydataset.mytable ./myfile.csv
Introduza o seguinte comando para carregar myfile.json
do seu computador local para uma tabela denominada mytable
, que está armazenada num conjunto de dados denominado mydataset
.
bq load --autodetect --source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable ./myfile.json
API
Crie uma tarefa
load
que aponte para os dados de origem. Para informações sobre como criar tarefas, consulte o artigo Executar tarefas do BigQuery por programação. Especifique a sua localização na propriedadelocation
na secçãojobReference
.Especifique o formato de dados definindo a propriedade
sourceFormat
. Para usar a deteção automática de esquemas, este valor tem de ser definido comoNEWLINE_DELIMITED_JSON
ouCSV
.Use a propriedade
autodetect
para definir a deteção automática de esquemas comotrue
.
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
.
PHP
Antes de experimentar este exemplo, siga as PHPinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API PHP 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
Para ativar a deteção automática de esquemas, defina a propriedade LoadJobConfig.autodetect como True
.
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
.
Ruby
Antes de experimentar este exemplo, siga as Rubyinstruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API Ruby 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
.
Deteção automática de esquemas para origens de dados externas
A deteção automática de esquemas pode ser usada com origens de dados externos CSV, JSON e do Google Sheets. Quando a deteção automática de esquemas está ativada, o BigQuery faz uma tentativa de inferir automaticamente o esquema a partir dos dados de origem. Se não ativar a deteção automática de esquemas para estas origens, tem de fornecer um esquema explícito.
Não precisa de ativar a deteção automática de esquemas quando consulta ficheiros externos Avro, Parquet, ORC, de exportação do Firestore ou de exportação do Datastore. Estes formatos de ficheiros são autodescritivos, pelo que o BigQuery infere automaticamente o esquema da tabela a partir dos dados de origem. Para ficheiros Parquet, Avro e Orc, pode fornecer opcionalmente um esquema explícito para substituir o esquema inferido.
Usando a Trusted Cloud consola, pode ativar a deteção automática de esquemas selecionando a opção Esquema e parâmetros de entrada para Deteção automática.
Com a ferramenta de linha de comandos bq, pode ativar a deteção automática de esquemas quando
criar um ficheiro de definição de tabelas para dados CSV, JSON ou do Google Sheets. Quando usar a ferramenta bq para criar um ficheiro de definição de tabela, transmita a flag --autodetect
para o comando mkdef
para ativar a deteção automática de esquemas ou transmita a flag --noautodetect
para desativar a deteção automática.
Quando usa a flag --autodetect
, a definição autodetect
é definida como true
no ficheiro de definição da tabela. Quando usa a flag --noautodetect
, a definição autodetect
é definida como false
. Se não fornecer uma definição de esquema para a origem de dados externa quando criar uma definição de tabela e não usar a flag --noautodetect
ou --autodetect
, a definição autodetect
é predefinida como true
.
Quando cria um ficheiro de definição de tabela através da API, defina o valor da propriedade autodetect
como true
ou false
. Definir autodetect
como true
ativa a deteção automática. Se definir autodetect
como false
, a deteção automática é desativada.
Detalhes da deteção automática
Além de detetar detalhes do esquema, a deteção automática reconhece o seguinte:
Compressão
O BigQuery reconhece a compressão de ficheiros compatível com gzip quando abre um ficheiro.
Valores de data e hora
O BigQuery deteta valores de data e hora com base na formatação dos dados de origem.
Os valores nas colunas DATE
têm de estar no seguinte formato: YYYY-MM-DD
.
Os valores nas colunas TIME
têm de estar no seguinte formato: HH:MM:SS[.SSSSSS]
(o componente de fração de segundo é opcional).
Para colunas TIMESTAMP
, o BigQuery deteta uma grande variedade de formatos de data/hora, incluindo, entre outros:
YYYY-MM-DD HH:MM
YYYY-MM-DD HH:MM:SS
YYYY-MM-DD HH:MM:SS.SSSSSS
YYYY/MM/DD HH:MM
Uma data/hora também pode conter um desvio UTC ou o designador de zona UTC ("Z").
Seguem-se alguns exemplos de valores que o BigQuery deteta automaticamente como valores de indicação de tempo:
- 2018-08-19 12:11
- 2018-08-19 12:11:35.22
- 2018/08/19 12:11
- 2018-08-19 07:11:35.220 -05:00
Se a deteção automática não estiver ativada e o seu valor estiver num formato não presente nos exemplos anteriores, o BigQuery só pode carregar a coluna como um tipo de dados STRING
. Pode ativar a deteção automática para que o BigQuery reconheça estas colunas como datas/horas. Por exemplo, o BigQuery só carrega 2025-06-16T16:55:22Z
como uma data/hora se ativar a deteção automática.
Em alternativa, pode pré-processar os dados de origem antes de os carregar. Por exemplo, se estiver a exportar dados CSV de uma folha de cálculo, defina o formato de data de modo a corresponder a um dos exemplos apresentados aqui. Também pode transformar os dados depois de os carregar para o BigQuery.
Deteção automática do esquema para dados CSV
Delimitador CSV
O BigQuery deteta os seguintes delimitadores:
- vírgula ( , )
- barra vertical ( | )
- tabulação ( \t )
Cabeçalho do CSV
O BigQuery infere os cabeçalhos comparando a primeira linha do ficheiro com outras linhas no ficheiro. Se a primeira linha contiver apenas strings e as outras linhas contiverem outros tipos de dados, o BigQuery assume que a primeira linha é uma linha de cabeçalho. O BigQuery atribui nomes de colunas com base nos nomes dos campos na linha do cabeçalho. Os nomes podem ser modificados para cumprir as regras de nomenclatura para colunas no BigQuery. Por exemplo, os espaços são substituídos por sublinhados.
Caso contrário, o BigQuery assume que a primeira linha é uma linha de dados e atribui nomes de colunas genéricos, como string_field_1
. Tenha em atenção que, depois de criar uma tabela, não é possível atualizar os nomes das colunas no esquema, embora possa alterar os nomes manualmente depois de criar a tabela. Outra opção é fornecer um esquema explícito
em vez de usar a deteção automática.
Pode ter um ficheiro CSV com uma linha de cabeçalho, em que todos os campos de dados são
strings. Nesse caso, o BigQuery não deteta automaticamente que a primeira linha é um cabeçalho. Use a opção --skip_leading_rows
para ignorar a linha de cabeçalho. Caso contrário, o cabeçalho é importado como dados. Considere também fornecer um esquema explícito neste caso para poder atribuir nomes de colunas.
Novas linhas entre aspas no CSV
O BigQuery deteta carateres de nova linha entre aspas num campo CSV e não interpreta o caráter de nova linha entre aspas como um limite de linha.
Deteção automática de esquemas para dados JSON
Campos JSON aninhados e repetidos
O BigQuery infere campos aninhados e repetidos em ficheiros JSON. Se um valor de campo for um objeto JSON, o BigQuery carrega a coluna como um tipo RECORD
. Se o valor de um campo for uma matriz, o BigQuery carrega a coluna como uma coluna repetida. Para ver um exemplo de dados JSON com dados aninhados e
repetidos, consulte o artigo
Carregar dados JSON aninhados e repetidos.
Conversão de string
Se ativar a deteção automática de esquemas, o BigQuery converte as strings em tipos booleanos, numéricos ou de data/hora, quando possível. Por exemplo, usando os seguintes dados JSON, a deteção automática do esquema converte o campo id
numa coluna INTEGER
:
{ "name":"Alice","id":"12"}
{ "name":"Bob","id":"34"}
{ "name":"Charles","id":"45"}
Para mais informações, consulte o artigo Carregar dados JSON a partir do Cloud Storage.
Deteção automática de esquemas para o Google Sheets
Para o Sheets, o BigQuery deteta automaticamente se a primeira linha é uma linha de cabeçalho, de forma semelhante à deteção automática de ficheiros CSV. Se a primeira linha for identificada como um cabeçalho, o BigQuery atribui nomes de colunas com base nos nomes dos campos na linha do cabeçalho e ignora a linha. Os nomes podem ser modificados para cumprir as regras de nomenclatura para colunas no BigQuery. Por exemplo, os espaços são substituídos por sublinhados.
Segurança da mesa
Para controlar o acesso a tabelas no BigQuery, consulte o artigo Controle o acesso a recursos com a IAM.