Converter JSON em esquema BigQuery — Numio
Gera um schema de tabela do Google BigQuery (um array JSON de campos com name, type e mode) a partir de JSON de exemplo. Arrays viram REPEATED, objetos aninhados viram RECORD e todos os elementos de um array são mesclados em um único schema.
Montar um arquivo de schema para bq load ou bq mk --schema a partir de um evento de exemplo ou de uma resposta de API.
JSON
Big Query Schema
Quando usar
- Montar um arquivo de schema para bq load ou bq mk --schema a partir de um evento de exemplo ou de uma resposta de API.
- Verificar como objetos aninhados e arrays de um registro de log são mapeados para colunas RECORD e REPEATED antes de criar uma tabela.
Como usar
- Cole um objeto JSON ou um array de registros de exemplo no editor da esquerda ou use o botão de carregar arquivo para abrir um arquivo UTF-8.
- Leia o schema à direita; confira o tipo escolhido para cada campo, principalmente datas, strings numéricas e arrays.
- Copie o array JSON, ajuste os tipos ou defina mode como REQUIRED onde for preciso e salve-o como arquivo de schema.
Objeto JSON de exemplo
{
"order_id": 1024,
"zip": "02139",
"coupon": null,
"created_at": "2026-01-05T10:00:00Z",
"items": [{ "sku": "A1", "qty": 2 }, { "sku": "B7", "price": 4.5 }]
}Schema do BigQuery em JSON
[
{
"name": "order_id",
"type": "INTEGER",
"mode": "NULLABLE"
},
{
"name": "zip",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "coupon",
"type": "STRING",
"mode": "NULLABLE"
},
{
"name": "created_at",
"type": "TIMESTAMP",
"mode": "NULLABLE"
},
{
"name": "items",
"type": "RECORD",
…Detalhes e limitações
Strings só recebem o tipo TIMESTAMP quando parecem uma data e hora ISO (2026-01-05T10:00:00Z), e DATE apenas para um YYYY-MM-DD simples; todo o resto, incluindo strings numéricas como "02139", continua STRING.
Um valor null ou um array vazio não traz tipo, então vira STRING (NULLABLE ou REPEATED), a menos que outro registro forneça um valor. O mode REQUIRED nunca é gerado.
Os campos são mesclados entre todos os elementos do array: INTEGER com FLOAT vira FLOAT, e outros tipos conflitantes voltam para STRING.
A conversão roda no seu navegador; nada é enviado.
FAQ
Por que minha coluna de data e hora tem o tipo TIMESTAMP e não DATETIME?
O gerador não distingue datas e horas com fuso das locais; qualquer string de data e hora ISO vira TIMESTAMP. Mude para DATETIME à mão se os valores não tiverem fuso horário.
Posso colar um array de registros?
Sim. Um array de objetos na raiz é mesclado em um único schema, então um campo presente só em alguns registros também é incluído. NDJSON (um objeto por linha) não é analisado; envolva as linhas em [ ] com vírgulas.
Que tipo recebem os valores null?
NULLABLE STRING quando nenhuma outra amostra dá valor ao campo, como mostra coupon no exemplo. Forneça uma amostra não nula, ou edite o tipo, se a coluna for numérica ou um RECORD.