Carregar dados JSON a partir do Cloud Storage
Pode carregar dados JSON delimitados por novas linhas (ndJSON) do Cloud Storage para uma nova tabela ou partição, ou anexar ou substituir uma tabela ou uma partição existente. Quando os dados são carregados no BigQuery, são convertidos no formato de colunas para o Capacitor (o formato de armazenamento do BigQuery).
Quando carrega dados do Cloud Storage para uma tabela do BigQuery, o conjunto de dados que contém a tabela tem de estar na mesma localização regional ou multirregional que o contentor do Cloud Storage.
O formato ndJSON é o mesmo que o formato JSON Lines.
Limitações
Está sujeito às seguintes limitações quando carrega dados para o BigQuery a partir de um contentor do Cloud Storage:
- O BigQuery não garante a consistência dos dados para origens de dados externas. As alterações aos dados subjacentes durante a execução de uma consulta podem resultar num comportamento inesperado.
- O BigQuery não suporta o controlo de versões de objetos do Cloud Storage. Se incluir um número de geração no URI do Cloud Storage, a tarefa de carregamento falha.
Quando carrega ficheiros JSON para o BigQuery, tenha em atenção o seguinte:
- Os dados JSON têm de ser delimitados por newline ou ndJSON. Cada objeto JSON tem de estar numa linha separada no ficheiro.
- Se usar a compressão gzip, o BigQuery não consegue ler os dados em paralelo. O carregamento de dados JSON comprimidos para o BigQuery é mais lento do que o carregamento de dados não comprimidos.
- Não pode incluir ficheiros comprimidos e não comprimidos no mesmo trabalho de carregamento.
- O tamanho máximo de um ficheiro gzip é de 4 GB.
O BigQuery suporta o tipo
JSON
, mesmo que as informações do esquema não sejam conhecidas no momento do carregamento. Um campo declarado como tipoJSON
é carregado com os valores JSON não processados.Se usar a API BigQuery para carregar um número inteiro fora do intervalo de [-253+1, 253-1] (normalmente, isto significa superior a 9 007 199 254 740 991) numa coluna de números inteiros (INT64), transmita-o como uma string para evitar a danificação de dados. Este problema é causado por uma limitação no tamanho dos números inteiros em JSON ou ECMAScript. Para mais informações, consulte a secção Números da RFC 7159.
- Quando carrega dados CSV ou JSON, os valores nas colunas
DATE
têm de usar o separador de travessão (-
) e a data tem de estar no seguinte formato:YYYY-MM-DD
(ano-mês-dia). - Quando carrega dados JSON ou CSV, os valores nas colunas
TIMESTAMP
têm de usar um traço (-
) ou uma barra (/
) como separador para a parte da data da data/hora, e a data tem de estar num dos seguintes formatos:YYYY-MM-DD
(ano-mês-dia) ouYYYY/MM/DD
(ano/mês/dia). A partehh:mm:ss
(hora-minuto-segundo) da data/hora tem de usar um separador de dois pontos (:
). Os seus ficheiros têm de cumprir os limites de tamanho de ficheiros JSON descritos nos limites de tarefas de carregamento.
Antes de começar
Conceda funções de gestão de identidade e de acesso (IAM) que dão aos utilizadores as autorizações necessárias para realizar cada tarefa neste documento e crie um conjunto de dados para armazenar os seus dados.
Autorizações necessárias
Para carregar dados para o BigQuery, precisa de autorizações da IAM para executar uma tarefa de carregamento e carregar dados para tabelas e partições do BigQuery. Se estiver a carregar dados do Cloud Storage, também precisa de autorizações de IAM para aceder ao contentor que contém os seus dados.
Autorizações para carregar dados para o BigQuery
Para carregar dados para uma nova tabela ou partição do BigQuery, ou para anexar ou substituir uma tabela ou uma partição existente, precisa das seguintes autorizações de IAM:
bigquery.tables.create
bigquery.tables.updateData
bigquery.tables.update
bigquery.jobs.create
Cada uma das seguintes funções de IAM predefinidas inclui as autorizações de que precisa para carregar dados para uma tabela ou uma partição do BigQuery:
roles/bigquery.dataEditor
roles/bigquery.dataOwner
roles/bigquery.admin
(inclui a autorizaçãobigquery.jobs.create
)bigquery.user
(inclui a autorizaçãobigquery.jobs.create
)bigquery.jobUser
(inclui a autorizaçãobigquery.jobs.create
)
Além disso, se tiver a autorização bigquery.datasets.create
, pode criar e
atualizar tabelas através de uma tarefa de carregamento nos conjuntos de dados que criar.
Para mais informações sobre as funções e as autorizações do IAM no BigQuery, consulte o artigo Funções e autorizações predefinidas.
Autorizações para carregar dados do Cloud Storage
Para receber as autorizações de que precisa para carregar dados de um contentor do Cloud Storage, peça ao seu administrador para lhe conceder a função de IAM Administrador de armazenamento (roles/storage.admin
) no contentor.
Para mais informações sobre a atribuição de funções, consulte o artigo Faça a gestão do acesso a projetos, pastas e organizações.
Esta função predefinida contém as autorizações necessárias para carregar dados a partir de um contentor do Cloud Storage. Para ver as autorizações exatas que são necessárias, expanda a secção Autorizações necessárias:
Autorizações necessárias
São necessárias as seguintes autorizações para carregar dados de um contentor do Cloud Storage:
-
storage.buckets.get
-
storage.objects.get
-
storage.objects.list (required if you are using a URI wildcard)
Também pode conseguir estas autorizações com funções personalizadas ou outras funções predefinidas.
Crie um conjunto de dados
Crie um conjunto de dados do BigQuery para armazenar os seus dados.
Compressão JSON
Pode usar o utilitário gzip
para comprimir ficheiros JSON. Tenha em atenção que o gzip
realiza a compressão completa de ficheiros, ao contrário da compressão de conteúdo de ficheiros realizada por codecs de compressão para outros formatos de ficheiros, como o Avro. A utilização de gzip
para comprimir os seus ficheiros JSON pode ter um impacto no desempenho. Para mais informações sobre as concessões, consulte o artigo Carregar dados comprimidos e não comprimidos.
Carregar dados JSON para uma nova tabela
Para carregar dados JSON do Cloud Storage para uma nova tabela do BigQuery:
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
- No painel Explorador, expanda o seu projeto e, de seguida, selecione um conjunto de dados.
- Na secção Informações do conjunto de dados, clique em Criar tabela.
- No painel Criar tabela, especifique os seguintes detalhes:
- Na secção Origem, selecione Google Cloud Storage na lista Criar tabela a partir de.
Em seguida, faça o seguinte:
- Selecione um ficheiro do contentor do Cloud Storage ou introduza o
URI do Cloud Storage.
Não pode incluir vários URIs
na Trusted Cloud consola, mas os carateres 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 quer criar, acrescentar ou substituir.
- Para Formato de ficheiro, selecione JSONL (JSON delimitado por Newline).
- Selecione um ficheiro do contentor do Cloud Storage ou introduza o
URI do Cloud Storage.
Não pode incluir vários URIs
na Trusted Cloud consola, mas os carateres 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 quer criar, acrescentar ou substituir.
- Na secção Destino, especifique os seguintes detalhes:
- Para Conjunto de dados, selecione o conjunto de dados no qual quer criar a tabela.
- No campo Tabela, introduza o nome da tabela que quer criar.
- Verifique se o campo Tipo de tabela está definido como Tabela nativa.
- Na secção Esquema, introduza a definição do esquema.
Para ativar a deteção automática de um esquema,
selecione Deteção automática.
Pode introduzir manualmente informações do esquema através de um dos
seguintes métodos:
- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
bq show --format=prettyjson dataset.table
- Opção 2: clique em Tipo e Modo de cada campo. Adicionar campo e introduza o esquema da tabela. Especifique o Nome,
- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
- Opcional: especifique as definições de partição e cluster. Para mais informações, consulte os artigos Criar tabelas particionadas e Criar e usar tabelas agrupadas.
- Clique em Opções avançadas e faça o seguinte:
- Para Preferência de escrita, deixe a opção Escrever se estiver vazio selecionada. Esta opção cria uma nova tabela e carrega os seus dados na mesma.
- Para Número de erros permitidos, aceite o valor predefinido de
0
ou introduza o número máximo de linhas com erros que podem ser ignorados. Se o número de linhas com erros exceder este valor, a tarefa vai gerar uma mensageminvalid
e falhar. Esta opção aplica-se apenas a ficheiros CSV e JSON. - Em Fuso horário, introduza o fuso horário predefinido que vai ser aplicado quando analisar valores de data/hora que não tenham um fuso horário específico. Consulte aqui mais nomes de fusos horários válidos. Se este valor não estiver presente, os valores de data/hora sem um fuso horário específico são analisados através do fuso horário predefinido UTC. (Pré-visualizar).
- Para Formato de data, introduza os
elementos de formato que definem como os valores DATE são formatados nos ficheiros de entrada. Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY
). Se este valor estiver presente, este formato é o único formato DATE compatível. A deteção automática de esquemas também decide o tipo de coluna DATE com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo DATE é analisado com os formatos predefinidos. (Pré-visualizar). - Para Formato de data/hora, introduza os
elementos de formato que definem como os valores DATETIME são formatados nos ficheiros de entrada.
Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato DATETIME compatível. A deteção automática do esquema também decide o tipo de coluna DATETIME com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo DATETIME é analisado com os formatos predefinidos. (Pré-visualizar). - Para Formato de hora, introduza os
elementos de formato que definem como os valores de TIME são formatados nos ficheiros de entrada. Este campo espera o formato de estilos SQL (por exemplo,
HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato de TIME compatível. A deteção automática do esquema também decide o tipo de coluna TIME com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo TIME é analisado com os formatos predefinidos. (Pré-visualizar). - Para o Formato de data/hora, introduza os
elementos de formato que definem como os valores de data/hora são formatados nos ficheiros de entrada.
Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato TIMESTAMP compatível. A deteção automática do esquema também decide o tipo de coluna TIMESTAMP com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo TIMESTAMP é analisado com os formatos predefinidos. (Pré-visualizar). - Se quiser ignorar valores numa linha que não estejam presentes no esquema da tabela, selecione Valores desconhecidos.
- Para Encriptação, clique em Chave gerida pelo cliente para usar uma chave do Cloud Key Management Service. Se deixar a definição Google Cloud-powered key, o BigQuery encripta os dados em repouso.
- Clique em Criar tabela.
SQL
Use a
LOAD DATA
declaração DDL.
O exemplo seguinte carrega um ficheiro JSON na nova tabela mytable
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
LOAD DATA OVERWRITE mydataset.mytable (x INT64,y STRING) FROM FILES ( format = 'JSON', uris = ['gs://bucket/path/file.json']);
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Use o comando bq load
, especifique NEWLINE_DELIMITED_JSON
usando a flag --source_format
e inclua um URI do Cloud Storage.
Pode incluir um único URI, uma lista de URIs separados por vírgulas ou um URI
que contenha um caractere universal.
Forneça o esquema inline, num ficheiro de definição do esquema ou use a
deteção automática de esquemas.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
Outras flags opcionais incluem:
--max_bad_records
: um número inteiro que especifica o número máximo de registos inválidos permitidos antes de toda a tarefa falhar. O valor predefinido é0
. São devolvidos, no máximo, cinco erros de qualquer tipo, independentemente do valor de--max_bad_records
.--ignore_unknown_values
: quando especificado, permite e ignora valores adicionais não reconhecidos em dados CSV ou JSON.--time_zone
: (Pré-visualização) Um fuso horário predefinido opcional que é aplicado ao analisar valores de data/hora que não têm um fuso horário específico nos dados CSV ou JSON.--date_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores DATE são formatados nos dados CSV ou JSON.--datetime_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores DATETIME são formatados em dados CSV ou JSON.--time_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores TIME são formatados nos dados CSV ou JSON.--timestamp_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores de TIMESTAMP são formatados nos dados CSV ou JSON.--autodetect
: Quando especificado, ativa a deteção automática de esquemas para dados CSV e JSON.--time_partitioning_type
: ativa a partição baseada no tempo numa tabela e define o tipo de partição. Os valores possíveis sãoHOUR
,DAY
,MONTH
eYEAR
. Esta flag é opcional quando cria uma tabela particionada numa colunaDATE
,DATETIME
ouTIMESTAMP
. O tipo de partição predefinido para a partição baseada no tempo éDAY
. Não pode alterar a especificação de partição numa tabela existente.--time_partitioning_expiration
: um número inteiro que especifica (em segundos) quando uma partição baseada no tempo deve ser eliminada. O tempo de expiração é avaliado como a data UTC da partição mais o valor inteiro.--time_partitioning_field
: a colunaDATE
ouTIMESTAMP
usada para criar uma tabela particionada. Se a partição baseada no tempo estiver ativada sem este valor, é criada uma tabela particionada por tempo de ingestão.--require_partition_filter
: quando ativada, esta opção exige que os utilizadores incluam uma cláusulaWHERE
que especifique as partições a consultar. A exigência de um filtro de partição pode reduzir o custo e melhorar o desempenho. Para mais informações, consulte o artigo Exija um filtro de partição nas consultas.--clustering_fields
: uma lista separada por vírgulas de até quatro nomes de colunas usados para criar uma tabela agrupada.--destination_kms_key
: a chave do Cloud KMS para a encriptação dos dados da tabela.Para mais informações sobre tabelas particionadas, consulte:
Para mais informações sobre tabelas agrupadas, consulte:
Para mais informações sobre a encriptação de tabelas, consulte:
Para carregar dados JSON para o BigQuery, introduza o seguinte comando:
bq --location=LOCATION load \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Substitua o seguinte:
LOCATION
: a sua localização. A flag--location
é opcional. Por exemplo, se estiver a usar o BigQuery na região de Tóquio, pode definir o valor da flag comoasia-northeast1
. Pode predefinir um valor para a localização através do ficheiro.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
.DATASET
: um conjunto de dados existente.TABLE
: o nome da tabela para a qual está a carregar dados.PATH_TO_SOURCE
: um URI do Cloud Storage totalmente qualificado ou uma lista de URIs separados por vírgulas. Os carateres universais também são suportados.SCHEMA
: um esquema válido. O esquema pode ser um ficheiro JSON local ou pode ser introduzido inline como parte do comando. Se usar um ficheiro de esquema, não lhe atribua uma extensão. Também pode usar a flag--autodetect
em vez de fornecer uma definição de esquema.
Exemplos:
O comando seguinte carrega dados de gs://mybucket/mydata.json
para uma tabela denominada mytable
em mydataset
. O esquema está definido num ficheiro de esquema local denominado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
O comando seguinte carrega dados de gs://mybucket/mydata.json
para uma nova tabela particionada por tempo de carregamento denominada mytable
em mydataset
. O esquema está definido num ficheiro de esquema local denominado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
--time_partitioning_type=DAY \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
O comando seguinte carrega dados de gs://mybucket/mydata.json
para uma tabela particionada denominada mytable
em mydataset
. A tabela está particionada
na coluna mytimestamp
. O esquema está definido num ficheiro de esquema local com o nome myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
--time_partitioning_field mytimestamp \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
O comando seguinte carrega dados de gs://mybucket/mydata.json
para uma tabela denominada mytable
em mydataset
. O esquema é detetado automaticamente.
bq load \
--autodetect \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
O comando seguinte carrega dados de gs://mybucket/mydata.json
para uma tabela denominada mytable
em mydataset
. O esquema é definido inline no formato FIELD:DATA_TYPE, FIELD:DATA_TYPE
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
qtr:STRING,sales:FLOAT,year:STRING
O comando seguinte carrega dados de vários ficheiros em gs://mybucket/
para uma tabela denominada mytable
em mydataset
. O URI do Cloud Storage usa um caráter
universal. O esquema é detetado automaticamente.
bq load \
--autodetect \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata*.json
O comando seguinte carrega dados de vários ficheiros em gs://mybucket/
para uma tabela denominada mytable
em mydataset
. O comando inclui uma lista de URIs do Cloud Storage separados por vírgulas com carateres universais. O esquema está definido num ficheiro de esquema local denominado myschema
.
bq load \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
"gs://mybucket/00/*.json","gs://mybucket/01/*.json" \
./myschema
API
Crie uma tarefa
load
que aponte para os dados de origem no Cloud Storage.(Opcional) Especifique a sua localização na propriedade
location
na secçãojobReference
do recurso de emprego.A propriedade
source URIs
tem de estar totalmente qualificada no formatogs://BUCKET/OBJECT
. Cada URI pode conter um carater universal "*".Especifique o
JSON
formato de dados definindo a propriedadesourceFormat
comoNEWLINE_DELIMITED_JSON
.Para verificar o estado da tarefa, chame
jobs.get(JOB_ID*)
, substituindoJOB_ID
pelo ID da tarefa devolvido pelo pedido inicial.- Se
status.state = DONE
, a tarefa foi concluída com êxito. - Se a propriedade
status.errorResult
estiver presente, o pedido falhou e esse objeto inclui informações que descrevem o que correu mal. Quando um pedido falha, não é criada nenhuma tabela nem são carregados dados. - Se
status.errorResult
estiver ausente, a tarefa foi concluída com êxito; no entanto, podem ter ocorrido alguns erros não fatais, como problemas na importação de algumas linhas. Os erros não fatais são apresentados na propriedadestatus.errors
do objeto de tarefa devolvido.
- Se
Notas da API:
Os trabalhos de carregamento são atómicos e consistentes. Se um trabalho de carregamento falhar, nenhum dos dados está disponível. Se um trabalho de carregamento for bem-sucedido, todos os dados estão disponíveis.
Como prática recomendada, gere um ID exclusivo e transmita-o como
jobReference.jobId
quando chamarjobs.insert
para criar uma tarefa de carregamento. Esta abordagem é mais robusta em caso de falha de rede, uma vez que o cliente pode sondar ou tentar novamente com o ID da tarefa conhecido.A chamada
jobs.insert
num determinado ID da tarefa é idempotente. Pode tentar novamente quantas vezes quiser com o mesmo ID da tarefa e, no máximo, uma dessas operações é bem-sucedida.
C#
Antes de experimentar este exemplo, siga as C#instruções de configuração no início rápido do BigQuery com bibliotecas cliente. Para mais informações, consulte a API C# 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
.
BigQueryClient.CreateLoadJob()
para iniciar uma tarefa de carregamento
a partir do Cloud Storage. Para usar JSONL, crie um objeto
CreateLoadJobOptions
e defina a respetiva propriedade
SourceFormat
como
FileFormat.NewlineDelimitedJson
.
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
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
.
NEWLINE_DELIMITED_JSON
e transmita a configuração da tarefa como o argumento job_config
para o método load_table_from_uri()
.
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
.
format
como "json"
.
Carregar dados JSON aninhados e repetidos
O BigQuery suporta o carregamento de dados aninhados e repetidos a partir de formatos de origem que suportam esquemas baseados em objetos, como JSON, Avro, ORC, Parquet, Firestore e Datastore.
Cada objeto JSON, incluindo todos os campos aninhados ou repetidos, tem de aparecer em cada linha.
O exemplo seguinte mostra dados aninhados ou repetidos de exemplo. Esta tabela contém informações sobre pessoas. É composto pelos seguintes campos:
id
first_name
last_name
dob
(data de nascimento)addresses
(um campo aninhado e repetido)addresses.status
(atual ou anterior)addresses.address
addresses.city
addresses.state
addresses.zip
addresses.numberOfYears
(anos no endereço)
O ficheiro de dados JSON teria o seguinte aspeto. Repare que o campo de endereço contém uma matriz de valores (indicada por [ ]
).
{"id":"1","first_name":"John","last_name":"Doe","dob":"1968-01-22","addresses":[{"status":"current","address":"123 First Avenue","city":"Seattle","state":"WA","zip":"11111","numberOfYears":"1"},{"status":"previous","address":"456 Main Street","city":"Portland","state":"OR","zip":"22222","numberOfYears":"5"}]} {"id":"2","first_name":"Jane","last_name":"Doe","dob":"1980-10-16","addresses":[{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"},{"status":"previous","address":"321 Main Street","city":"Hoboken","state":"NJ","zip":"44444","numberOfYears":"3"}]}
O esquema desta tabela teria o seguinte aspeto:
[ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "first_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "last_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "dob", "type": "DATE", "mode": "NULLABLE" }, { "name": "addresses", "type": "RECORD", "mode": "REPEATED", "fields": [ { "name": "status", "type": "STRING", "mode": "NULLABLE" }, { "name": "address", "type": "STRING", "mode": "NULLABLE" }, { "name": "city", "type": "STRING", "mode": "NULLABLE" }, { "name": "state", "type": "STRING", "mode": "NULLABLE" }, { "name": "zip", "type": "STRING", "mode": "NULLABLE" }, { "name": "numberOfYears", "type": "STRING", "mode": "NULLABLE" } ] } ]
Para obter informações sobre como especificar um esquema aninhado e repetido, consulte o artigo Especificar campos aninhados e repetidos.
Carregar dados JSON semiestruturados
O BigQuery suporta o carregamento de dados semiestruturados, nos quais um campo pode assumir valores de diferentes tipos. O exemplo seguinte mostra dados semelhantes ao exemplo de dados JSON aninhados e repetidos anterior, exceto que o campo address
pode ser um STRING
, um STRUCT
ou um ARRAY
:
{"id":"1","first_name":"John","last_name":"Doe","dob":"1968-01-22","address":"123 First Avenue, Seattle WA 11111"} {"id":"2","first_name":"Jane","last_name":"Doe","dob":"1980-10-16","address":{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"}} {"id":"3","first_name":"Bob","last_name":"Doe","dob":"1982-01-10","address":[{"status":"current","address":"789 Any Avenue","city":"New York","state":"NY","zip":"33333","numberOfYears":"2"}, "321 Main Street Hoboken NJ 44444"]}
Pode carregar estes dados para o BigQuery usando o seguinte esquema:
[ { "name": "id", "type": "STRING", "mode": "NULLABLE" }, { "name": "first_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "last_name", "type": "STRING", "mode": "NULLABLE" }, { "name": "dob", "type": "DATE", "mode": "NULLABLE" }, { "name": "address", "type": "JSON", "mode": "NULLABLE" } ]
O campo address
é carregado numa coluna do tipo JSON
que lhe permite conter os tipos mistos no exemplo. Pode carregar dados como JSON
, quer contenham tipos mistos ou não. Por exemplo, pode especificar JSON
em vez de STRING
como o tipo para o campo first_name
. Para mais informações, consulte o artigo
Trabalhar com dados JSON no GoogleSQL.
Anexar ou substituir uma tabela com dados JSON
Pode carregar dados adicionais para uma tabela a partir de ficheiros de origem ou acrescentando resultados de consultas.
Na Trusted Cloud consola, use a opção Preferência de escrita para especificar que ação realizar quando carregar dados de um ficheiro de origem ou de um resultado de consulta.
Tem as seguintes opções quando carrega dados adicionais numa tabela:
Opção da consola | Sinalização da ferramenta bq | Propriedade da API BigQuery | Descrição |
---|---|---|---|
Escrever se estiver vazio | Não suportado | WRITE_EMPTY |
Escreve os dados apenas se a tabela estiver vazia. |
Anexar à tabela | --noreplace ou --replace=false ; se
--[no]replace não estiver especificado, a predefinição é anexar |
WRITE_APPEND |
(Predefinição) Anexa os dados ao final da tabela. |
Substituir tabela | --replace ou --replace=true |
WRITE_TRUNCATE |
Apaga todos os dados existentes numa tabela antes de escrever os novos dados. Esta ação também elimina o esquema da tabela, a segurança ao nível da linha e remove qualquer chave do Cloud KMS. |
Se carregar dados para uma tabela existente, a tarefa de carregamento pode anexar os dados ou substituir a tabela.
Pode acrescentar ou substituir uma tabela através de um dos seguintes métodos:
- A Trusted Cloud consola
- O comando
bq load
da ferramenta de linhas de comando bq - O método da API
jobs.insert
e a configuração de uma tarefaload
- As bibliotecas cliente
Consola
Na Trusted Cloud consola, aceda à página BigQuery.
- No painel Explorador, expanda o seu projeto e, de seguida, selecione um conjunto de dados.
- Na secção Informações do conjunto de dados, clique em Criar tabela.
- No painel Criar tabela, especifique os seguintes detalhes:
- Na secção Origem, selecione Google Cloud Storage na lista Criar tabela a partir de.
Em seguida, faça o seguinte:
- Selecione um ficheiro do contentor do Cloud Storage ou introduza o
URI do Cloud Storage.
Não pode incluir vários URIs
na Trusted Cloud consola, mas os carateres 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 quer criar, acrescentar ou substituir.
- Para Formato de ficheiro, selecione JSONL (JSON delimitado por Newline).
- Selecione um ficheiro do contentor do Cloud Storage ou introduza o
URI do Cloud Storage.
Não pode incluir vários URIs
na Trusted Cloud consola, mas os carateres 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 quer criar, acrescentar ou substituir.
- Na secção Destino, especifique os seguintes detalhes:
- Para Conjunto de dados, selecione o conjunto de dados no qual quer criar a tabela.
- No campo Tabela, introduza o nome da tabela que quer criar.
- Verifique se o campo Tipo de tabela está definido como Tabela nativa.
- Na secção Esquema, introduza a definição do esquema.
Para ativar a deteção automática de um esquema,
selecione Deteção automática.
Pode introduzir manualmente informações do esquema através de um dos
seguintes métodos:
- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
bq show --format=prettyjson dataset.table
- Opção 2: clique em Tipo e Modo de cada campo. Adicionar campo e introduza o esquema da tabela. Especifique o Nome,
- Opção 1: clique em Editar como texto e cole o esquema sob a forma de uma matriz JSON. Quando usa uma matriz JSON, gera o esquema através do
mesmo processo que criar um ficheiro de esquema JSON.
Pode ver o esquema de uma tabela existente no formato JSON introduzindo o seguinte comando:
- Opcional: especifique as definições de partição e cluster. Para mais informações, consulte os artigos Criar tabelas particionadas e Criar e usar tabelas agrupadas. Não pode converter uma tabela numa tabela particionada ou agrupada anexando-a ou substituindo-a. A Trusted Cloud consola não suporta a anexação nem a substituição de tabelas particionadas ou agrupadas num trabalho de carregamento.
- Clique em Opções avançadas e faça o seguinte:
- Para Preferência de escrita, escolha Anexar à tabela ou Substituir tabela.
- Para Número de erros permitidos, aceite o valor predefinido de
0
ou introduza o número máximo de linhas com erros que podem ser ignorados. Se o número de linhas com erros exceder este valor, a tarefa vai gerar uma mensageminvalid
e falhar. Esta opção aplica-se apenas a ficheiros CSV e JSON. - Em Fuso horário, introduza o fuso horário predefinido que vai ser aplicado quando analisar valores de data/hora que não tenham um fuso horário específico. Consulte aqui mais nomes de fusos horários válidos. Se este valor não estiver presente, os valores de data/hora sem um fuso horário específico são analisados através do fuso horário predefinido UTC. (Pré-visualizar).
- Para Formato de data, introduza os
elementos de formato que definem como os valores DATE são formatados nos ficheiros de entrada. Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY
). Se este valor estiver presente, este formato é o único formato DATE compatível. A deteção automática de esquemas também decide o tipo de coluna DATE com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo DATE é analisado com os formatos predefinidos. (Pré-visualizar). - Para Formato de data/hora, introduza os
elementos de formato que definem como os valores DATETIME são formatados nos ficheiros de entrada.
Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato DATETIME compatível. A deteção automática do esquema também decide o tipo de coluna DATETIME com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo DATETIME é analisado com os formatos predefinidos. (Pré-visualizar). - Para Formato de hora, introduza os
elementos de formato que definem como os valores de TIME são formatados nos ficheiros de entrada. Este campo espera o formato de estilos SQL (por exemplo,
HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato de TIME compatível. A deteção automática do esquema também decide o tipo de coluna TIME com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo TIME é analisado com os formatos predefinidos. (Pré-visualizar). - Para o Formato de data/hora, introduza os
elementos de formato que definem como os valores de data/hora são formatados nos ficheiros de entrada.
Este campo espera o formato de estilos SQL (por exemplo,
MM/DD/YYYY HH24:MI:SS.FF3
). Se este valor estiver presente, este formato é o único formato TIMESTAMP compatível. A deteção automática do esquema também decide o tipo de coluna TIMESTAMP com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo TIMESTAMP é analisado com os formatos predefinidos. (Pré-visualizar). - Se quiser ignorar valores numa linha que não estejam presentes no esquema da tabela, selecione Valores desconhecidos.
- Para Encriptação, clique em Chave gerida pelo cliente para usar uma chave do Cloud Key Management Service. Se deixar a definição Google Cloud-powered key, o BigQuery encripta os dados em repouso.
- Clique em Criar tabela.
SQL
Use a
LOAD DATA
declaração DDL.
O exemplo seguinte anexa um ficheiro JSON à tabela mytable
:
Na Trusted Cloud consola, aceda à página BigQuery.
No editor de consultas, introduza a seguinte declaração:
LOAD DATA INTO mydataset.mytable FROM FILES ( format = 'JSON', uris = ['gs://bucket/path/file.json']);
Clique em
Executar.
Para mais informações sobre como executar consultas, consulte o artigo Execute uma consulta interativa.
bq
Use o comando bq load
, especifique NEWLINE_DELIMITED_JSON
usando a flag --source_format
e inclua um URI do Cloud Storage.
Pode incluir um único URI, uma lista de URIs separados por vírgulas ou um URI
que contenha um caractere universal.
Forneça o esquema inline, num ficheiro de definição do esquema ou use a deteção automática de esquemas.
Especifique a flag --replace
para substituir a tabela. Use a flag --noreplace
para anexar dados à tabela. Se não for especificada nenhuma flag, a predefinição é anexar dados.
É possível modificar o esquema da tabela quando a acrescenta ou substitui. Para mais informações sobre as alterações ao esquema suportadas durante uma operação de carregamento, consulte o artigo Modificar esquemas de tabelas.
(Opcional) Forneça a flag --location
e defina o valor para a sua
localização.
Outras flags opcionais incluem:
--max_bad_records
: um número inteiro que especifica o número máximo de registos inválidos permitidos antes de toda a tarefa falhar. O valor predefinido é0
. São devolvidos, no máximo, cinco erros de qualquer tipo, independentemente do valor de--max_bad_records
.--ignore_unknown_values
: quando especificado, permite e ignora valores adicionais não reconhecidos em dados CSV ou JSON.--time_zone
: (Pré-visualização) Um fuso horário predefinido opcional que é aplicado ao analisar valores de data/hora que não têm um fuso horário específico nos dados CSV ou JSON.--date_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores DATE são formatados nos dados CSV ou JSON.--datetime_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores DATETIME são formatados em dados CSV ou JSON.--time_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores TIME são formatados nos dados CSV ou JSON.--timestamp_format
: (Pré-visualização) Uma string personalizada opcional que define como os valores de TIMESTAMP são formatados nos dados CSV ou JSON.--autodetect
: Quando especificado, ativa a deteção automática de esquemas para dados CSV e JSON.--destination_kms_key
: a chave do Cloud KMS para a encriptação dos dados da tabela.
bq --location=LOCATION load \ --[no]replace \ --source_format=FORMAT \ DATASET.TABLE \ PATH_TO_SOURCE \ SCHEMA
Substitua o seguinte:
LOCATION
: a sua localização. A flag--location
é opcional. Pode definir um valor predefinido para a localização através do ficheiro.bigqueryrc.FORMAT
:NEWLINE_DELIMITED_JSON
.DATASET
: um conjunto de dados existente.TABLE
: o nome da tabela para a qual está a carregar dados.PATH_TO_SOURCE
: um URI do Cloud Storage totalmente qualificado ou uma lista de URIs separados por vírgulas. Os carateres universais também são suportados.SCHEMA
: um esquema válido. O esquema pode ser um ficheiro JSON local ou pode ser introduzido inline como parte do comando. Também pode usar a flag--autodetect
em vez de fornecer uma definição de esquema.
Exemplos:
O comando seguinte carrega dados de gs://mybucket/mydata.json
e
substitui uma tabela denominada mytable
em mydataset
. O esquema é definido
através da deteção automática de esquemas.
bq load \
--autodetect \
--replace \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json
O comando seguinte carrega dados de gs://mybucket/mydata.json
e anexa dados a uma tabela denominada mytable
em mydataset
. O esquema é definido através de um ficheiro de esquema JSON: myschema
.
bq load \
--noreplace \
--source_format=NEWLINE_DELIMITED_JSON \
mydataset.mytable \
gs://mybucket/mydata.json \
./myschema
API
Crie uma tarefa
load
que aponte para os dados de origem no Cloud Storage.(Opcional) Especifique a sua localização na propriedade
location
na secçãojobReference
do recurso de emprego.A propriedade
source URIs
tem de ser totalmente qualificada, no formatogs://BUCKET/OBJECT
. Pode incluir vários URIs como uma lista separada por vírgulas. Os carateres universais também são suportados.Especifique o formato de dados definindo a propriedade
configuration.load.sourceFormat
comoNEWLINE_DELIMITED_JSON
.Especifique a preferência de escrita definindo a propriedade
configuration.load.writeDisposition
comoWRITE_TRUNCATE
ouWRITE_APPEND
.
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
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 substituir as linhas numa tabela existente, defina a propriedade LoadJobConfig.write_disposition para a string WRITE_TRUNCATE
.
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
Para substituir as linhas numa tabela existente, defina o parâmetro write
de Table.load_job() como "WRITE_TRUNCATE"
.
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
.
Carregar dados JSON particionados por Hive
O BigQuery suporta o carregamento de dados JSON particionados por Hive armazenados no Cloud Storage e preenche as colunas de particionamento por Hive como colunas na tabela gerida do BigQuery de destino. Para mais informações, consulte o artigo Carregar dados particionados externamente.
Detalhes do carregamento de dados JSON
Esta secção descreve como o BigQuery analisa vários tipos de dados quando carrega dados JSON.
Tipos de dados
Booleano. O BigQuery pode analisar qualquer um dos seguintes pares para dados booleanos: 1 ou 0, verdadeiro ou falso, t ou f, sim ou não, ou y ou n (todos sem distinção entre maiúsculas e minúsculas). A deteção automática do esquema deteta automaticamente qualquer um destes, exceto 0 e 1.Bytes. As colunas com tipos BYTES têm de ser codificadas como Base64.
Data. As colunas com tipos DATE têm de estar no formato YYYY-MM-DD
.
Data/hora. As colunas com tipos DATETIME têm de estar no formato YYYY-MM-DD
HH:MM:SS[.SSSSSS]
.
Geografia. As colunas com tipos GEOGRAPHY têm de conter strings num dos seguintes formatos:
- Texto conhecido (WKT)
- Well-known binary (WKB)
- GeoJSON
Se usar WKB, o valor deve ser codificado em hexadecimal.
A lista que se segue mostra exemplos de dados válidos:
- WKT:
POINT(1 2)
- GeoJSON:
{ "type": "Point", "coordinates": [1, 2] }
- WKB codificado em hexadecimal:
0101000000feffffffffffef3f0000000000000040
Antes de carregar dados GEOGRÁFICOS, leia também o artigo Carregar dados geoespaciais.
Intervalo. As colunas com tipos INTERVAL devem estar no formato ISO 8601PYMDTHMS
, onde:
- P = Designador que indica que o valor representa uma duração. Tem de incluir sempre esta informação.
- Y = Ano
- M = mês
- D = Dia
- T = Designador que indica a parte de tempo da duração. Tem de incluir sempre esta informação.
- H = Hora
- M = minuto
- S = segundo. Os segundos podem ser indicados como um valor inteiro ou como um valor fracionário de até seis dígitos, com precisão de microssegundos.
Pode indicar um valor negativo antepondo um travessão (-).
A lista que se segue mostra exemplos de dados válidos:
P-10000Y0M-3660000DT-87840000H0M0S
P0Y0M0DT0H0M0.000001S
P10000Y0M3660000DT87840000H0M0S
Para carregar dados INTERVAL, tem de usar o comando bq load
e usar a flag --schema
para especificar um esquema. Não pode carregar dados INTERVAL através da consola.
Hora. As colunas com tipos TIME têm de estar no formato HH:MM:SS[.SSSSSS]
.
Data/hora. O BigQuery aceita vários formatos de data/hora. A data/hora tem de incluir uma parte de data e uma parte de hora.
A parte da data pode ser formatada como
YYYY-MM-DD
ouYYYY/MM/DD
.A parte da data/hora tem de estar formatada como
HH:MM[:SS[.SSSSSS]]
(os segundos e as frações de segundos são opcionais).A data e a hora têm de estar separadas por um espaço ou "T".
Opcionalmente, a data e a hora podem ser seguidas de uma diferença para UTC ou do designador de zona UTC (
Z
). Para mais informações, consulte Fusos horários.
Por exemplo, qualquer um dos seguintes valores de indicação de tempo é válido:
- 2018-08-19 12:11
- 2018-08-19 12:11:35
- 2018-08-19 12:11:35.22
- 2018/08/19 12:11
- 2018-07-05 12:54:00 UTC
- 2018-08-19 07:11:35.220 -05:00
- 2018-08-19T12:11:35.220Z
Se fornecer um esquema, o BigQuery também aceita a hora desde epoch Unix para valores de data/hora. No entanto, a deteção automática do esquema não deteta este caso e trata o valor como um tipo numérico ou de string.
Exemplos de valores de indicação de tempo de época Unix:
- 1534680695
- 1,534680695e12
Matriz (campo repetido). O valor tem de ser uma matriz JSON ou null
. O JSON
null
é convertido em SQL NULL
. A matriz não pode conter valores null
.
Deteção automática do esquema
Esta secção descreve o comportamento da deteção automática de esquemas ao carregar ficheiros 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"}
Tipos de codificação
O BigQuery espera que os dados JSON sejam codificados em UTF-8. Se tiver ficheiros JSON com outros tipos de codificação suportados, deve especificar explicitamente a codificação através da flag --encoding
para que o BigQuery converta os dados para UTF-8.
O BigQuery suporta os seguintes tipos de codificação para ficheiros JSON:
- UTF-8
- ISO-8859-1
- UTF-16BE (UTF-16 Big Endian)
- UTF-16LE (UTF-16 Little Endian)
- UTF-32BE (UTF-32 Big Endian)
- UTF-32LE (UTF-32 Little Endian)
Opções JSON
Para alterar a forma como o BigQuery analisa os dados JSON, especifique opções adicionais na Trusted Cloud consola, na ferramenta de linha de comandos bq, na API ou nas bibliotecas de cliente.
Opção JSON | Opção da consola | Sinalização da ferramenta bq | Propriedade da API BigQuery | Descrição |
---|---|---|---|---|
Número de registos inválidos permitidos | Número de erros permitidos | --max_bad_records |
maxBadRecords
(Java,
Python)
|
(Opcional) O número máximo de registos inválidos que o BigQuery pode ignorar ao executar a tarefa. Se o número de registos danificados exceder este valor, é devolvido um erro inválido no resultado da tarefa. O valor predefinido é `0`, o que requer que todos os registos sejam válidos. |
Valores desconhecidos | Ignorar valores desconhecidos | --ignore_unknown_values |
ignoreUnknownValues
(Java,
Python)
|
(Opcional) Indica se o BigQuery deve permitir valores adicionais que não estão representados no esquema da tabela. Se for verdadeiro, os valores adicionais são ignorados. Se for falso, os registos com colunas adicionais são tratados como registos inválidos e, se existirem demasiados registos inválidos, é devolvido um erro inválido no resultado da tarefa. O valor predefinido é false. A propriedade `sourceFormat` determina o que o BigQuery trata como um valor adicional: CSV: colunas finais, JSON: valores com nome que não correspondem a nenhum nome de coluna. |
Codificação | Nenhum | -E ou --encoding |
encoding
(Python) |
(Opcional) A codificação de carateres dos dados. Os valores suportados são: UTF-8, ISO-8859-1, UTF-16BE, UTF-16LE, UTF-32BE ou UTF-32LE. O valor predefinido é UTF-8. |
Fuso horário | Fuso horário | --time_zone |
Nenhum | (Pré-visualização) (Opcional) Fuso horário predefinido que é aplicado quando são analisados valores de data/hora que não têm um fuso horário específico. Verifique os nomes de fusos horários válidos. Se este valor não estiver presente, os valores de data/hora sem um fuso horário específico são analisados através do fuso horário predefinido UTC. |
Formato de data | Formato de data | --date_format |
Nenhum | (Pré-visualização) (Opcional)
Elementos de formato
que definem como os valores DATE são formatados nos ficheiros de entrada (por
exemplo, MM/DD/YYYY ). Se este valor estiver presente, este formato é
o único formato DATE compatível.
A deteção automática de esquemas
também decide o tipo de coluna DATE com base neste formato, em vez do
formato existente. Se este valor não estiver presente, o campo DATE é analisado com os formatos predefinidos. |
Formato de data/hora | Formato de data/hora | --datetime_format |
Nenhum | (Pré-visualização) (Opcional)
Elementos de formato
que definem como os valores DATETIME são formatados nos ficheiros de entrada (por
exemplo, MM/DD/YYYY HH24:MI:SS.FF3 ). Se este valor estiver presente,
este formato é o único formato DATETIME compatível.
A deteção automática do esquema
também decide o tipo de coluna DATETIME com base neste formato em vez do
formato existente. Se este valor não estiver presente, o campo DATETIME é analisado
com os
formatos predefinidos. |
Formato de hora | Formato de hora | --time_format |
Nenhum | (Pré-visualização) (Opcional)
Elementos de formato
que definem como os valores TIME são formatados nos ficheiros de entrada (por
exemplo, HH24:MI:SS.FF3 ). Se este valor estiver presente, este formato
é o único formato TIME compatível.
A deteção automática do esquema também decide o tipo de coluna TIME com base neste formato, em vez do formato existente. Se este valor não estiver presente, o campo TIME é analisado com os
formatos predefinidos. |
Formato de data/hora | Formato de data/hora | --timestamp_format |
Nenhum | (Pré-visualização) (Opcional)
Elementos de formato
que definem como os valores TIMESTAMP são formatados nos ficheiros de entrada (por
exemplo, MM/DD/YYYY HH24:MI:SS.FF3 ). Se este valor estiver presente,
este formato é o único formato TIMESTAMP compatível.
A deteção automática do esquema
também decide o tipo de coluna TIMESTAMP com base neste formato, em vez do
formato existente. Se este valor não estiver presente, o campo TIMESTAMP é analisado
com os
formatos predefinidos. |
O que se segue?
- Para obter informações sobre o carregamento de dados JSON a partir de um ficheiro local, consulte o artigo Carregar dados a partir de ficheiros locais.
- Para mais informações sobre como criar, carregar e consultar dados JSON, consulte o artigo Trabalhar com dados JSON no GoogleSQL.