JSON to Snowflake CREATE TABLE DDL Generator
Cloud Data Warehouse e DDL

JSON to Snowflake CREATE TABLE DDL Generator

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.

Privacidade 100% no cliente
Zero transmissão ao servidor
Predefinições:
Configuração do esquema de destinoANALYTICS_PROD.PUBLIC.SNOWFLAKE_EVENTSSTANDARDVARIANT
EntradaJSON Array
-- ============================================================================
-- Snowflake CREATE TABLE DDL
-- Target: ANALYTICS_PROD.PUBLIC.SNOWFLAKE_EVENTS
-- Generated by ToolsAA JSON to Snowflake DDL Studio
-- Strategy: VARIANT | Table Kind: STANDARD
-- ============================================================================

-- USE DATABASE ANALYTICS_PROD;
-- USE SCHEMA PUBLIC;

CREATE OR REPLACE TABLE ANALYTICS_PROD.PUBLIC.SNOWFLAKE_EVENTS (
  EVENT_ID                     VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "event_id"',
  TENANT_ID                    VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "tenant_id"',
  USER_ID                      VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "user_id"',
  EVENT_NAME                   VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "event_name"',
  EVENT_TIMESTAMP              TIMESTAMP_NTZ    NOT NULL COMMENT 'Extracted from JSON key "event_timestamp"',
  SESSION_DURATION_SECONDS     FLOAT            NOT NULL COMMENT 'Extracted from JSON key "session_duration_seconds"',
  IS_BILLED_CUSTOMER           BOOLEAN          NOT NULL COMMENT 'Extracted from JSON key "is_billed_customer"',
  CLIENT_IP                    VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "client_ip"',
  USER_AGENT                   VARCHAR          NOT NULL COMMENT 'Extracted from JSON key "user_agent"',
  CONTEXT                      VARIANT          NOT NULL COMMENT 'Extracted from JSON key "context"',
  PAYLOAD                      VARIANT          NOT NULL COMMENT 'Extracted from JSON key "payload"',
  TAGS                         VARIANT          NOT NULL COMMENT 'Extracted from JSON key "tags"',
  _INGESTION_TIMESTAMP         TIMESTAMP_NTZ    DEFAULT CURRENT_TIMESTAMP() NOT NULL COMMENT 'Auto-populated ingestion timestamp',
  _SOURCE_FILE_NAME            VARCHAR(1000)    COMMENT 'Stage source path file',
  CONSTRAINT PK_SNOWFLAKE_EVENTS PRIMARY KEY (EVENT_ID, TENANT_ID, USER_ID) NOT ENFORCED
)
CLUSTER BY (EVENT_TIMESTAMP, TENANT_ID)
DATA_RETENTION_TIME_IN_DAYS = 1
COMMENT = 'Production table synthesized from JSON payload'
;

-- Quick Verification Query:
-- SELECT * FROM ANALYTICS_PROD.PUBLIC.SNOWFLAKE_EVENTS LIMIT 20;
Inferred Columns14Campos
Estruturas geradas3Unnested objects and array elements
Snowflake EfficiencySTANDARD
100%Micro-partition and columnar compressed

Execução Local Zero-Knowledge

Todo o processamento, análise e geração de código ocorrem estritamente na memória do seu navegador. Zero uploads para servidores externos.

Motor Reativo de Submilissegundos

All data payloads remain strictly local with zero external server communication.

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Referência técnica e guia de arquitetura

Guia do Desenvolvedor: Gerador de DDL CREATE TABLE de JSON para Snowflake — Guia de referência

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.

Parâmetros principais e controles

tableNameString

Identificador da tabela de destino no Snowflake, com suporte a prefixos de banco de dados e esquema (ex.: ANALYTICS_DB.RAW_STAGING.CUSTOMERS).

Padrão: JSON_RAW_RECORDS
casingEnum (UPPERCASE | LOWERCASE | PRESERVE)

Convenção de nomenclatura das colunas. UPPERCASE segue a resolução padrão sem aspas do Snowflake; PRESERVE usa aspas duplas.

Padrão: UPPERCASE
nestedStrategyEnum (VARIANT | STRING | FLATTEN)

Estratégia para objetos e arrays JSON aninhados. VARIANT utiliza o armazenamento semiestruturado nativo do Snowflake.

Padrão: VARIANT
detectTimestampsBoolean

Analisa strings para identificar o formato ISO 8601 e aplicar TIMESTAMP_NTZ em vez do tipo genérico VARCHAR.

Padrão: true
tableTypeEnum (PERMANENT | TRANSIENT | TEMPORARY)

Nível de persistência da tabela. Tabelas TRANSIENT eliminam custos de armazenamento Fail-safe para pipelines de staging.

Padrão: PERMANENT

Dicas profissionais e melhores práticas

Em vez de desmembrar objetos aninhados

Em vez de desmembrar objetos aninhados em dezenas de colunas esparsas, mapeie-os diretamente para o tipo VARIANT do Snowflake. O Snowflake organiza internamente as subchaves em micropartições colunares comprimidas, garantindo alto desempenho de leitura sem exigir revisões frequentes de esquema.

O Snowflake converte identificadores

O Snowflake converte identificadores sem aspas automaticamente para letras maiúsculas. Usar nomes minúsculos entre aspas obriga todas as ferramentas downstream (dbt, Looker, Metabase) a utilizarem aspas duplas escapadas. Mantenha o padrão UPPERCASE para facilitar consultas SQL.

Ao criar tabelas para ingestão via

Ao criar tabelas para ingestão via Snowpipe ou transformações temporárias, utilize CREATE TRANSIENT TABLE. Isso mantém 1 dia de Time Travel e elimina o custo do período de Fail-safe de 7 dias para dados de alta rotatividade.

No Snowflake

No Snowflake, um campo VARCHAR sem especificação de tamanho tem limite de 16 MB sem qualquer impacto negativo na memória ou no armazenamento em disco, pois os dados são gravados de forma compactada. Isso evita falhas de ingestão decorrentes de textos longos.

Problemas comuns e solução de problemas

Nomes de atributos com caracteres especiais ou palavras reservadas geram erros

Caso as chaves JSON contenham hifens, espaços ou palavras reservadas do SQL (como 'order', 'date'), utilize a opção PRESERVE para delimitar as colunas com aspas duplas ("user-id" VARCHAR) ou sanitize os nomes substituindo caracteres inválidos por sublinhados (_).

Colunas inferidas como inteiros (NUMBER) descartam casas decimais em cargas posteriores

Se o payload JSON de teste possui apenas números inteiros em campos que podem receber decimais no ambiente de produção (como valores monetários), altere a tipagem manualmente para FLOAT ou NUMBER(18,4).

Tipos divergentes entre múltiplos registros da amostra causam inconsistência

Quando um mesmo atributo alterna entre números e strings em diferentes objetos, defina o tipo da coluna como VARCHAR ou mantenha a estrutura como VARIANT para evitar falhas durante a carga de dados.

Perguntas frequentes (FAQ)

Por que utilizar o tipo VARIANT em vez de criar colunas para cada campo aninhado?▼

O tipo VARIANT foi criado especificamente para gerenciar dados semiestruturados no Snowflake. Durante a ingestão, o motor do Snowflake compacta e estrutura internamente os caminhos JSON mais frequentes, permitindo consultas SQL velozes (ex.: `dados:cliente.nome::STRING`) com total tolerância à evolução do schema da API de origem.

Como o Snowflake interpreta maiúsculas e minúsculas nos nomes de tabelas e colunas?▼

Por padrão, o Snowflake converte identificadores sem aspas para letras maiúsculas. Apenas identificadores delimitados por aspas duplas mantêm a diferenciação de maiúsculas/minúsculas e caracteres especiais, exigindo o uso estrito de aspas em todas as instruções SQL.

Qual é a diferença prática entre TIMESTAMP_NTZ e TIMESTAMP_TZ para datas em JSON?▼

TIMESTAMP_NTZ (No Time Zone) armazena data e hora sem fuso horário, sendo a opção recomendada quando as datas já se encontram normalizadas em UTC. O TIMESTAMP_TZ armazena o deslocamento original de fuso presente na string ISO 8601.

Deixar o VARCHAR sem restrição de tamanho afeta a performance das consultas no Snowflake?▼

Não. Ao contrário de bancos de dados relacionais legados baseados em linhas, o Snowflake opera em arquitetura colunar com micropartições comprimidas. Um VARCHAR sem tamanho especificado consome apenas o espaço estritamente necessário para os bytes armazenados.

O DDL gerado pode ser integrado diretamente ao Snowpipe e a comandos COPY INTO?▼

Sim. As tabelas geradas são totalmente compatíveis com comandos COPY INTO (incluindo a opção `MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE`) e com pipelines contínuos de ingestão automatizada via Snowpipe.

Ferramentas e utilitários relacionados

Todas as ferramentas →
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→
Gerador de NetworkPolicy K8S Referência para DesenvolvedoresDesenvolvimento

Referência de engenharia para gerar manifestos declarativos de NetworkPolicy no Kubernetes, isolamento zero-trust de pods, regras de ingress/egress, blocos CIDR e múltiplas portas.

Abrir ferramenta→