Início
Esquema BigQuery

Gerador de esquema de tabela Google BigQuery a partir de JSON

RECORD & NDJSON

Infira e converta objetos JSON em esquemas de tabela JSON para o Google Cloud BigQuery com suporte a RECORD, STRING, INTEGER, NUMERIC e TIMESTAMP.

Presets:
Opções de esquema e ingestão do BigQueryecommerce_dw.fact_order_events
Payload JSON / NDJSON / JSONL de entrada
1[
2 {
3 "name": "event_id",
4 "type": "STRING",
5 "mode": "REQUIRED",
6 "description": "Field representing event id"
7 },
8 {
9 "name": "order_id",
10 "type": "STRING",
11 "mode": "REQUIRED",
12 "description": "Field representing order id"
13 },
14 {
15 "name": "order_status",
16 "type": "STRING",
17 "mode": "REQUIRED",
18 "description": "Field representing order status"
19 },
20 {
21 "name": "event_timestamp",
22 "type": "TIMESTAMP",
23 "mode": "REQUIRED",
24 "description": "Timestamp indicating when event timestamp occurred"
25 },
26 {
27 "name": "order_date",
28 "type": "DATE",
29 "mode": "REQUIRED",
30 "description": "Calendar date for order date"
31 },
32 {
33 "name": "subtotal_amount",
34 "type": "NUMERIC",
35 "mode": "REQUIRED",
36 "description": "Monetary or numeric measure for subtotal amount"
37 },
38 {
39 "name": "tax_amount",
40 "type": "NUMERIC",
41 "mode": "REQUIRED",
42 "description": "Monetary or numeric measure for tax amount"
43 },
44 {
45 "name": "discount_amount",
46 "type": "INT64",
47 "mode": "REQUIRED",
48 "description": "Integer count or identifier for discount amount"
49 },
50 {
51 "name": "grand_total",
52 "type": "NUMERIC",
53 "mode": "REQUIRED",
54 "description": "Monetary or numeric measure for grand total"
55 },
56 {
57 "name": "currency",
58 "type": "STRING",
59 "mode": "REQUIRED",
60 "description": "Field representing currency"
61 },
62 {
63 "name": "is_expedited",
64 "type": "BOOL",
65 "mode": "REQUIRED",
66 "description": "Boolean indicator flag for is expedited"
67 },
68 {
69 "name": "customer",
70 "type": "RECORD",
71 "mode": "REQUIRED",
72 "description": "Nested struct containing customer attributes",
73 "fields": [
74 {
75 "name": "customer_id",
76 "type": "STRING",
77 "mode": "REQUIRED",
78 "description": "Field representing customer id"
79 },
80 {
81 "name": "email",
82 "type": "STRING",
83 "mode": "REQUIRED",
84 "description": "Field representing email"
85 },
86 {
87 "name": "loyalty_tier",
88 "type": "STRING",
89 "mode": "REQUIRED",
90 "description": "Field representing loyalty tier"
91 },
92 {
93 "name": "account_created_at",
94 "type": "TIMESTAMP",
95 "mode": "REQUIRED",
96 "description": "Timestamp indicating when account created at occurred"
97 }
98 ]
99 },
100 {
101 "name": "shipping_address",
102 "type": "RECORD",
103 "mode": "REQUIRED",
104 "description": "Nested struct containing shipping address attributes",
105 "fields": [
106 {
107 "name": "recipient_name",
108 "type": "STRING",
109 "mode": "REQUIRED",
110 "description": "Field representing recipient name"
111 },
112 {
113 "name": "street_address",
114 "type": "STRING",
115 "mode": "REQUIRED",
116 "description": "Field representing street address"
117 },
118 {
119 "name": "city",
120 "type": "STRING",
121 "mode": "REQUIRED",
122 "description": "Field representing city"
123 },
124 {
125 "name": "state_code",
126 "type": "STRING",
127 "mode": "REQUIRED",
128 "description": "Field representing state code"
129 },
130 {
131 "name": "postal_code",
132 "type": "STRING",
133 "mode": "REQUIRED",
134 "description": "Field representing postal code"
135 },
136 {
137 "name": "country_code",
138 "type": "STRING",
139 "mode": "REQUIRED",
140 "description": "Field representing country code"
141 }
142 ]
143 },
144 {
145 "name": "line_items",
146 "type": "RECORD",
147 "mode": "REPEATED",
148 "description": "Repeated array of line items entries",
149 "fields": [
150 {
151 "name": "item_id",
152 "type": "STRING",
153 "mode": "REQUIRED",
154 "description": "Field representing item id"
155 },
156 {
157 "name": "sku",
158 "type": "STRING",
159 "mode": "REQUIRED",
160 "description": "Field representing sku"
161 },
162 {
163 "name": "product_name",
164 "type": "STRING",
165 "mode": "REQUIRED",
166 "description": "Field representing product name"
167 },
168 {
169 "name": "quantity",
170 "type": "INT64",
171 "mode": "REQUIRED",
172 "description": "Integer count or identifier for quantity"
173 },
174 {
175 "name": "unit_price",
176 "type": "NUMERIC",
177 "mode": "REQUIRED",
178 "description": "Monetary or numeric measure for unit price"
179 },
180 {
181 "name": "category",
182 "type": "STRING",
183 "mode": "REQUIRED",
184 "description": "Field representing category"
185 }
186 ]
187 },
188 {
189 "name": "tracking_tags",
190 "type": "STRING",
191 "mode": "REPEATED",
192 "description": "Repeated array of tracking tags entries"
193 },
194 {
195 "name": "warehouse_location",
196 "type": "GEOGRAPHY",
197 "mode": "REQUIRED",
198 "description": "Geospatial coordinates for warehouse location"
199 },
200 {
201 "name": "cancellation_reason",
202 "type": "STRING",
203 "mode": "NULLABLE",
204 "description": "Field representing cancellation reason"
205 }
206]
Campos do esquema e colunas33 colunas (30 obrigatório)
Hierarquia e aninhamento de StructsLevel 0 profundidade (3 registros aninhados)
Modos de campo e nulabilidadePartition: event_timestamp • Standard SQL

Inferência de esquema BigQuery 100% no navegador

Zero uploads para o servidor ou APIs em nuvem. Estruturas JSON complexas, structs aninhados e lotes NDJSON são processados na memória do navegador.

Sistema de tipos e modos do BigQuery para produção

Mapeia primitivos JSON para campos INT64, NUMERIC, TIMESTAMP, DATE, GEOGRAPHY e RECORD com modos NULLABLE, REQUIRED ou REPEATED.

Pronto para plataformas de dados em nuvem

Exporte esquemas para bq CLI, Google Cloud Terraform/Pulumi IaC, SDK Python do BigQuery e DDL SQL ANSI com particionamento.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de Esquema de Tabela Google BigQuery a partir de JSON — Guia de referência

Infira e converta objetos JSON em esquemas de tabela JSON para o Google Cloud BigQuery com suporte a RECORD, STRING, INTEGER, NUMERIC e TIMESTAMP.

Parâmetros principais e controles

defaultModestring

Define o modo de nulidade padrão (NULLABLE ou REQUIRED) para campos primitivos na raiz e em níveis aninhados.

Padrão: NULLABLE
timestampDetectionboolean

Inspeciona e identifica automaticamente sequências no padrão ISO 8601 (ex.: 2026-10-17T04:49:28Z), mapeando-as para TIMESTAMP em vez de STRING.

Padrão: true
numericPrecisionstring

Controla a precisão de números com ponto flutuante: escolha FLOAT64 para dados científicos ou NUMERIC / BIGNUMERIC para precisão monetária.

Padrão: NUMERIC
sanitizeFieldNamesboolean

Substitui chaves JSON com caracteres incompatíveis (hifens, espaços, dígitos iniciais) por identificadores válidos no BigQuery ([a-zA-Z_][a-zA-Z0-9_]*).

Padrão: true

Dicas profissionais e melhores práticas

Ao converter arquivos NDJSON

Ao converter arquivos NDJSON (JSON delimitado por linhas), analise vários registros simultaneamente para que campos opcionais não fiquem de fora do esquema final.

Mapeie dados monetários para o tipo

Mapeie dados monetários para o tipo NUMERIC (ponto fixo com até 38 dígitos) ou BIGNUMERIC, prevenindo imprecisões do formato FLOAT64 (IEEE 754).

Exporte o esquema para schema.json

Exporte o esquema para schema.json e carregue seus arquivos NDJSON diretamente: bq load --source_format=NEWLINE_DELIMITED_JSON meu_dataset.minha_tabela gs://meu-bucket/data.json ./schema.json

Modelagem de listas aninhadas

Matrizes de objetos tornam-se type: 'RECORD' com mode: 'REPEATED'. Assegure que as propriedades filhas estejam declaradas com os modos de nulidade corretos.

Problemas comuns e solução de problemas

Erro de nome de coluna inválido: 'Fields must contain only letters, numbers, and underscores'

Habilite a opção sanitizeFieldNames ou renomeie chaves com hifens (user-id) ou caracteres especiais para identificadores válidos em snake_case (user_id).

Conflito de tipos entre registros (ex.: linha 1 é INTEGER e linha 2 é STRING)

Padronize os dados na origem, expanda o tipo para STRING no esquema final ou adote o tipo nativo JSON do BigQuery.

Limite máximo de 15 níveis de aninhamento excedido

O BigQuery suporta no máximo 15 níveis em estruturas aninhadas. Achate objetos profundos ou armazene subárvores complexas em uma coluna do tipo JSON.

Perguntas frequentes (FAQ)

Como objetos e listas JSON são traduzidos no esquema do BigQuery?▼

Um objeto JSON torna-se type: 'RECORD' (STRUCT). Uma lista de primitivos recebe mode: 'REPEATED'. Já uma lista de objetos é convertida em type: 'RECORD' com mode: 'REPEATED' contendo um sub-array 'fields'.

Como importar dados no BigQuery utilizando o arquivo de esquema gerado?▼

Utilize a Google Cloud CLI: 'bq load --source_format=NEWLINE_DELIMITED_JSON meu_dataset.minha_tabela dados.ndjson ./schema.json' ou envie o JSON na propriedade de configuração de carregamento das APIs do BigQuery.

Quando utilizar o tipo nativo JSON em vez de campos de esquema explícitos?▼

Opte por esquemas rígidos e colunares para alto desempenho de consulta, particionamento e clustering. Prefira o tipo nativo JSON para dados semiestruturados e esquemas altamente voláteis.

Quais são as restrições para nomes de colunas no BigQuery?▼

Os nomes devem ter entre 1 e 300 caracteres, iniciar com letra ou sublinhado e conter somente letras, números e sublinhados. Em consultas SQL, não há diferenciação entre maiúsculas e minúsculas.

Ferramentas e utilitários relacionados

Todas as ferramentas →
Guia do Desenvolvedor: Gerador de DDL CREATE TABLE de JSON para SnowflakeDesenvolvimento

Converta payloads e esquemas JSON em instruções SQL CREATE TABLE para Snowflake de nível de produção com tipos VARIANT, VARCHAR, NUMBER, BOOLEAN e TIMESTAMP_NTZ.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Variáveis e Locals Terraform HCL a partir de JSON / YAMLDesenvolvimento

Converta estruturas JSON e YAML em restrições de tipo de variáveis Terraform HCL (type = object({...})), valores padrão, blocos locals e definições terraform.tfvars.

Abrir ferramenta→
Guia do Desenvolvedor: Conversor de OpenAPI / Swagger para GraphQL SDLDesenvolvimento

Converta endpoints REST, corpos de requisição e esquemas JSON de OpenAPI 3.0/3.1 e Swagger 2.0 em tipos, consultas, mutações e definições de entrada GraphQL SDL.

Abrir ferramenta→
Guia do Desenvolvedor: Gerador de Schemas TypeScript TypeBox a partir de DDL SQLDesenvolvimento

Converta instruções SQL CREATE TABLE em esquemas de validação em tempo de execução @sinclair/typebox usando Type.Object, Type.String, Type.Number e Type.Optional.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Rust (reqwest e tokio)Desenvolvimento

Converta comandos cURL em requisições HTTP idiomáticas e assíncronas em Rust utilizando reqwest, serde_json, cabeçalhos customizados e runtime Tokio.

Abrir ferramenta→
Guia do Desenvolvedor do Gerador de Código cURL para Ruby (Net::HTTP e Faraday)Desenvolvimento

Converta comandos cURL em código Ruby limpo e idiomático utilizando Net::HTTP, URI, Faraday e manipulação nativa de JSON.

Abrir ferramenta→