Startseite
Entwicklerhandbuch für den JSON zu ClickHouse CREATE TABLE DDL Generator

JSON zu ClickHouse CREATE TABLE DDL Generator

Konvertieren Sie JSON-Dokumente in ClickHouse SQL DDL mit MergeTree-Engine, UInt/Int/Float/String/DateTime-Typen sowie Array/Nested-Spaltenzuordnungen.

✨ Vorlagen:
Eingabe JSON / NDJSONARRAY
-- =================================================================
-- 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 Ermittelte Spalten
4 Ganzzahlen • 0 Gleitkomma • 15 Strings • 1 Arrays
MergeTree Tabellen-Engine
PARTITION BY toYYYYMM(event_time)
Spaltenbasierter Speicher optimiert
Index-Granularität 8192 • ZSTD/LZ4

100% Client-Side Datenschutz

Keine Server-Uploads oder Telemetrie. Ihre JSON-Nutzlasten, Schemas und Datenstrukturen verbleiben ausschließlich im Speicher Ihres Browsers.

Native ClickHouse-Typinferenz

Intelligente spaltenbasierte Typinferenz für UInt8-UInt64, Float32/Float64, DateTime64, LowCardinality(String), Arrays und verschachtelte Tupel.

Produktionsreife MergeTree-DDL & Pipelines

Erstellt sofort produktionsreife CREATE TABLE-Anweisungen mit ORDER BY, PARTITION BY, TTL-Ausdrücken und CLI-/HTTP-Ingest-Snippets.

Technische Referenz & Architektur-Leitfaden

Entwicklerhandbuch für den JSON zu ClickHouse CREATE TABLE DDL Generator — Referenz-Leitfaden

Konvertieren Sie JSON-Dokumente in ClickHouse SQL DDL mit MergeTree-Engine, UInt/Int/Float/String/DateTime-Typen sowie Array/Nested-Spaltenzuordnungen.

Wichtige Parameter & Steuerelemente

tableNamestring

Der Bezeichnername der zu erstellenden ClickHouse-Zieltabelle.

Standard: events
enginestring

ClickHouse-Tabellen-Engine, die Datenreplikation, Deduplizierung und Speicherarchitektur steuert.

Standard: MergeTree()
orderBystring

Primäres Sortierschlüssel-Tupel, das die physische Sortierung auf der Festplatte und den Sparse-Primärindex bestimmt.

Standard: (id, created_at)
partitionBystring

Partitionierungsschlüssel-Ausdruck zur chronologischen Aufteilung von Datenteilen und für effizientes Löschen.

Standard: toYYYYMM(created_at)
useLowCardinalityboolean

Wandelt Zeichenfolgen mit wiederkehrenden Werten automatisch in LowCardinality(String) für Wörterbuchkomprimierung um.

Standard: true
nullableboolean

Hüllt erkannte Typen in Nullable(T) ein, wenn Felder null sein können, oder nutzt standardmäßig performante Null-Werte.

Standard: false

Profi-Tipps & Best Practices

ClickHouse speichert Nullable-Spalten

ClickHouse speichert Nullable-Spalten in einer separaten Null-Masken-Datei (*.null), was die vektorisierte Ausführung und Komprimierung um 20-30 % verlangsamt. Verwenden Sie Standardwerte (leerer String, 0), sofern Null-Semantik nicht zwingend erforderlich ist.

Für Zeichenketten mit weniger als

Für Zeichenketten mit weniger als 10.000 eindeutigen Werten (z. B. Ländercodes, Browser, HTTP-Methoden) reduziert LowCardinality(String) den Speicherbedarf drastisch und beschleunigt GROUP BY-Aggregationen.

Optimale ORDER BY-Konfiguration

Halten Sie die ORDER BY-Klausel kompakt und sortieren Sie nach Selektivität (von niedriger zu hoher Kardinalität), um die Sparse-Index-Filterung bei typischen Abfragen optimal zu nutzen.

Wenn Ihre JSON-Daten Millisekunden

Wenn Ihre JSON-Daten Millisekunden oder Mikrosekunden enthalten (ISO 8601 mit Bruchteilen), verwenden Sie DateTime64(3, 'UTC') oder DateTime64(6, 'UTC') anstelle des 1-Sekunden-Standards DateTime.

Häufige Fallstricke & Fehlerbehebung

Leere Arrays [] oder gemischte Datentypen führen zu mehrdeutiger Typinferenz

Übergeben Sie repräsentative JSON-Objekte mit befüllten Arrays oder mehrzeilige JSON Lines (NDJSON). Bei gemischten Typen erfordert ClickHouse explizite String- oder Variant-Typen.

ORDER BY-Spalten enthalten Nullable-Typen und werfen DDL-Fehler

In MergeTree-Tabellen verbietet ClickHouse strikt Nullable-Typen innerhalb von PRIMARY KEY und ORDER BY. Konfigurieren Sie Sortierspalten als Non-Nullable.

Verschachtelte JSON-Objekte vs. flache Spaltenstruktur

ClickHouse unterstützt Nested-Typen und den experimentellen JSON-Typ. Für analytische Höchstleistung liefert das Flattening in Spalten mit Punktnotation (z. B. user_address_city) die beste Kompression.

Häufig gestellte Fragen (FAQ)

Wie ordnet dieser Generator JSON-Datentypen den ClickHouse-Spaltentypen zu?▼

Ganzzahlen werden präzisen Integer-Bereichen (UInt8/16/32/64, Int32/64) oder Float64 zugewiesen. ISO-8601-Datumsangaben werden zu Date32, DateTime oder DateTime64. Booleans werden als Bool, Arrays als Array(T) und Objekte als Tuple(...) oder Nested gemappt.

Warum wird die MergeTree-Engine von ClickHouse standardmäßig empfohlen?▼

MergeTree bildet das Fundament für ClickHouse-Analysen. Es bietet partitionierte Datenteile, Sparse-Primärindizes, automatische Hintergrund-Zusammenführungen und blitzschnelle vektorisierte Aggregationen über Milliarden von Datensätzen.

Kann man rohes JSON direkt ohne Schema in ClickHouse importieren?▼

Obwohl moderne Versionen den experimentellen Typ Object('json') unterstützen, erfordern produktive Best Practices ein explizites CREATE TABLE-Schema mit typisierten Spalten für 10- bis 50-mal bessere Kompression und verlässliche Abfragezeiten.

Werden vertrauliche JSON-Daten an Remote-Server übertragen?▼

Nein. Alle Parsing-Schritte, Typinferenzen, AST-Generierungen und SQL-Formatierungen finden vollständig lokal im JavaScript-Kontext Ihres Browsers statt. Es fließen keinerlei Telemetrie- oder Nutzdaten ab.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →