Inicio
Generador de DDL JSON a ClickHouse CREATE TABLE

Generador de DDL JSON a ClickHouse CREATE TABLE

Convierta documentos JSON de muestra en DDL de SQL para ClickHouse con motor MergeTree, tipos UInt/Int/Float/String/DateTime y mapeo de columnas Array/Nested.

✨ Ajustes:
Documento JSON / NDJSON de EntradaARRAY
-- =================================================================
-- ClickHouse DDL Generated by ToolsAA (100% Client-Side Private)
-- Target Engine: MergeTree | Columns: 22
-- =================================================================

CREATE TABLE IF NOT EXISTS `default`.`analytics_events`
(
    `event_id`                   LowCardinality(String) COMMENT 'Sample: e8d1a6b0-9f12-4e9b-b234-918237465abc',
    `tenant_id`                  UInt16 CODEC(T64, ZSTD(1)) COMMENT 'Sample: 1042',
    `event_time`                 DateTime64(3, 'UTC') CODEC(DoubleDelta, ZSTD(1)) COMMENT 'Sample: 2026-10-17T04:15:30.452Z',
    `event_name`                 LowCardinality(String) COMMENT 'Sample: button_clicked',
    `session_id`                 LowCardinality(String) COMMENT 'Sample: sess_8492019a',
    `user_id`                    LowCardinality(String) COMMENT 'Sample: usr_998124',
    `page_url`                   LowCardinality(String) COMMENT 'Sample: https://toolsaa.com/tools/json-to-clickhouse',
    `referrer`                   LowCardinality(String) COMMENT 'Sample: https://google.com',
    `client_ip`                  IPv4 COMMENT 'Sample: 192.168.1.105',
    `user_agent`                 LowCardinality(String) COMMENT 'Sample: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)',
    `device_type`                LowCardinality(String) COMMENT 'Sample: desktop',
    `browser`                    LowCardinality(String) COMMENT 'Sample: Chrome',
    `country_code`               LowCardinality(String) COMMENT 'Sample: US',
    `duration_ms`                UInt16 CODEC(T64, ZSTD(1)) COMMENT 'Sample: 320',
    `is_logged_in`               Bool CODEC(T64, ZSTD(1)) COMMENT 'Sample: true',
    `tags`                       Array(String) CODEC(ZSTD(1)) COMMENT 'Sample: ["saas","developer-tools","conversion"]',
    `properties_button_id`       Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: btn_generate_ddl',
    `properties_source_section`  Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: hero_banner',
    `properties_ab_test_variant` Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: v2_compact',
    `properties_file_extension`  Nullable(String) CODEC(ZSTD(1)) COMMENT 'Sample: json',
    `properties_file_size_bytes` Nullable(UInt16) CODEC(T64, ZSTD(1)) COMMENT 'Sample: 49200',
    `properties_record_count`    Nullable(UInt8) CODEC(T64, ZSTD(1)) COMMENT 'Sample: 150'
)
ENGINE = MergeTree()
PARTITION BY toYYYYMM(event_time)
ORDER BY (`tenant_id`, `event_name`, `event_time`, `event_id`)
SETTINGS index_granularity = 8192;
22 Columnas inferidas
4 Enteros • 0 Flotantes • 15 Cadenas • 1 Arreglos
MergeTree Motor de tabla
PARTITION BY toYYYYMM(event_time)
Almacenamiento columnar optimizado
Granularidad de índice 8192 • ZSTD/LZ4

Generador 100% Seguro en el Cliente

Cero cargas al servidor o telemetría. Sus cargas útiles JSON, esquemas y estructuras de datos permanecen estrictamente en la memoria de su navegador.

Inferencia Nativa de Tipos ClickHouse

Inferencia inteligente de tipos en columnas para UInt8-UInt64, Float32/Float64, DateTime64, LowCardinality(String), Arrays y tuplas anidadas.

MergeTree DDL y Canalizaciones de Producción

Genera instantáneamente sentencias CREATE TABLE listas para producción con ORDER BY, PARTITION BY, expresiones TTL y fragmentos de ingestión CLI / HTTP.

Referencia técnica y guía de arquitectura

Guía de Desarrollo: Generador de DDL CREATE TABLE de JSON a ClickHouse — Guía de referencia

Convierta documentos JSON de muestra en DDL de SQL para ClickHouse con motor MergeTree, tipos UInt/Int/Float/String/DateTime y mapeo de columnas Array/Nested.

Parámetros clave y controles

tableNamestring

Identificador del nombre de la tabla de destino en ClickHouse.

Por defecto: events
enginestring

Motor de tabla de ClickHouse que determina la replicación, deduplicación y almacenamiento.

Por defecto: MergeTree()
orderBystring

Tupla de clave de ordenación que define el orden físico en disco y el índice primario disperso.

Por defecto: (id, created_at)
partitionBystring

Expresión de clave de particionamiento para dividir cronológicamente las partes de datos y optimizar purgas.

Por defecto: toYYYYMM(created_at)
useLowCardinalityboolean

Convierte automáticamente cadenas repetitivas y enumeradas en LowCardinality(String) para compresión por diccionario.

Por defecto: true
nullableboolean

Envuelve tipos en Nullable(T) cuando los campos admiten nulos, o usa valores cero por defecto para máximo rendimiento.

Por defecto: false

Consejos profesionales y mejores prácticas

ClickHouse almacena las columnas

ClickHouse almacena las columnas Nullable mediante un archivo de máscara de nulos independiente (*.null), reduciendo la vectorización y la compresión entre un 20% y 30%. Utilice valores centinela por defecto (cadena vacía, 0) salvo que el valor nulo sea imprescindible.

Para cadenas con menos de 10.000

Para cadenas con menos de 10.000 valores únicos (códigos de país, navegadores, métodos HTTP), LowCardinality(String) crea índices de diccionario locales que reducen el almacenamiento y aceleran los GROUP BY.

Diseño óptimo de la clave ORDER BY

Mantenga la cláusula ORDER BY concisa y ordenada por selectividad de columna (de menor a mayor cardinalidad), alineándola con los patrones de filtrado más frecuentes para maximizar el podado de índices dispersos.

Si su JSON contiene marcas temporales

Si su JSON contiene marcas temporales con milisegundos o microsegundos (formato ISO 8601 fraccionario), elija DateTime64(3, 'UTC') o DateTime64(6, 'UTC') en lugar del estándar DateTime de 1 segundo.

Errores comunes y solución de problemas

Arrays vacíos [] o tipos de datos heterogéneos provocan inferencia ambigua

Proporcione objetos JSON representativos con arrays poblados o múltiples registros en JSON Lines (NDJSON). Para valores mixtos, ClickHouse requiere tipos String o Variant explícitos.

Columnas en ORDER BY contienen tipos Nullable provocando error en DDL

ClickHouse prohíbe terminantemente el uso de tipos Nullable dentro de PRIMARY KEY y ORDER BY en la familia MergeTree. Asegúrese de que las columnas de ordenación no admitan nulos.

Objetos JSON anidados frente a aplanamiento de columnas

ClickHouse admite columnas Nested y el tipo experimental JSON. Para analítica de alto rendimiento, aplanar las propiedades anidadas en columnas con guion bajo o punto (ej. user_address_city) ofrece una compresión y velocidad superiores.

Preguntas frecuentes (FAQ)

¿Cómo mapea este generador los tipos de datos JSON a columnas de ClickHouse?▼

Los números se analizan para rangos enteros exactos (UInt8/16/32/64, Int32/64) o Float64. Las cadenas ISO 8601 se mapean a Date32, DateTime o DateTime64. Los booleanos pasan a Bool, los arrays a Array(T) y los objetos anidados a Tuple(...) o Nested.

¿Por qué se recomienda el motor MergeTree por defecto en ClickHouse?▼

MergeTree es el núcleo del motor analítico de ClickHouse. Proporciona almacenamiento particionado, índices primarios dispersos, fusión automática de partes en segundo plano y agregaciones vectorizadas ultra rápidas sobre miles de millones de filas.

¿Se puede ingerir JSON sin procesar directamente en ClickHouse sin definir un esquema?▼

Aunque existen versiones que admiten el tipo experimental Object('json'), las buenas prácticas en entornos de producción exigen esquemas explícitos CREATE TABLE para obtener entre 10x y 50x mejor compresión y un rendimiento de consultas garantizado.

¿Se transmiten mis datos JSON a servidores externos durante la generación?▼

No. Toda la inferencia de esquemas, cálculo de tipos de datos, creación del AST y formateo SQL se ejecuta de manera 100% local en el navegador del cliente mediante JavaScript. No se envía ningún dato al exterior.

Herramientas y utilidades relacionadas

Todas las herramientas →
Guía de Desarrollo: Generador de Esquema de Tabla Google BigQuery desde JSONDesarrollo

Infiere y convierte objetos JSON en esquemas de tabla para Google Cloud BigQuery con campos RECORD, STRING, INTEGER, NUMERIC y TIMESTAMP.

Abrir herramienta→
Guía para Desarrolladores: Generador de DDL CREATE TABLE de JSON a SnowflakeDesarrollo

Transforme esquemas y cargas útiles JSON en sentencias SQL CREATE TABLE para Snowflake listas para producción con tipos de datos VARIANT, VARCHAR, NUMBER, BOOLEAN y TIMESTAMP_NTZ.

Abrir herramienta→
Guía de Desarrollo: Generador de Variables y Locals de Terraform HCL desde JSON / YAMLDesarrollo

Convierta cargas útiles JSON y YAML en restricciones de tipo de variables Terraform HCL (type = object({...})), valores predeterminados, bloques locals y definiciones terraform.tfvars.

Abrir herramienta→
Guía de Desarrollo: Conversor de OpenAPI / Swagger a GraphQL SDLDesarrollo

Convierte endpoints REST, cuerpos de solicitud y esquemas JSON de OpenAPI 3.0/3.1 y Swagger 2.0 en tipos, consultas, mutaciones y definiciones de entrada de GraphQL SDL.

Abrir herramienta→
Guía de desarrollo del generador de esquemas TypeBox TypeScript desde DDL SQLDesarrollo

Convierta sentencias SQL CREATE TABLE en esquemas de validación en tiempo de ejecución de @sinclair/typebox utilizando Type.Object, Type.String, Type.Number y Type.Optional.

Abrir herramienta→
Guía para Desarrolladores del Generador de Código cURL a Rust (reqwest y tokio)Desarrollo

Transforma comandos cURL en solicitudes HTTP asíncronas e idiomáticas en Rust utilizando reqwest, serde_json, encabezados personalizados y el runtime de Tokio.

Abrir herramienta→