JSON to Snowflake CREATE TABLE DDL Generator
Entrepôt de données Cloud et DDL

JSON to Snowflake CREATE TABLE DDL Generator

Convertissez vos structures et charges utiles JSON en instructions SQL CREATE TABLE prêtes pour la production dans Snowflake avec des types de données optimisés tels que VARIANT, VARCHAR, NUMBER, BOOLEAN et TIMESTAMP_NTZ.

Confidentialité 100% côté client
Zéro transmission au serveur
Préréglages :
Configuration du schéma cibleANALYTICS_PROD.PUBLIC.SNOWFLAKE_EVENTSSTANDARDVARIANT
EntréeJSON 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 Columns14Champs
Structures générées3Unnested objects and array elements
Snowflake EfficiencySTANDARD
100%Micro-partition and columnar compressed

Exécution Locale Zero-Knowledge

Tous les traitements, analyses et générations s'exécutent strictement dans la mémoire de votre navigateur. Zéro transmission vers un serveur externe.

Moteur Réactif Submilliseconde

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

Production Ready Export

Clean, optimized output formats ready for immediate deployment.

Référence technique et guide d'architecture

Guide Développeur : Générateur de DDL CREATE TABLE JSON vers Snowflake — Guide de référence

Convertissez vos structures et charges utiles JSON en instructions SQL CREATE TABLE prêtes pour la production dans Snowflake avec des types de données optimisés tels que VARIANT, VARCHAR, NUMBER, BOOLEAN et TIMESTAMP_NTZ.

Paramètres clés et contrôles

tableNameString

L'identifiant de la table Snowflake cible, prenant en charge les préfixes de base de données et de schéma (ex. ANALYTICS_DB.RAW_STAGING.CUSTOMERS).

Par défaut : JSON_RAW_RECORDS
casingEnum (UPPERCASE | LOWERCASE | PRESERVE)

Règle de casse pour les identifiants de colonnes. UPPERCASE respecte la résolution sans guillemets par défaut de Snowflake ; PRESERVE encadre les noms de guillemets doubles.

Par défaut : UPPERCASE
nestedStrategyEnum (VARIANT | STRING | FLATTEN)

Stratégie de traitement des objets et tableaux imbriqués. VARIANT tire parti du stockage semi-structuré natif de Snowflake pour des requêtes dynamiques.

Par défaut : VARIANT
detectTimestampsBoolean

Analyse les chaînes de caractères pour détecter les formats ISO 8601 et attribuer TIMESTAMP_NTZ plutôt qu'un VARCHAR générique.

Par défaut : true
tableTypeEnum (PERMANENT | TRANSIENT | TEMPORARY)

Niveau de persistance de la table. Les tables TRANSIENT évitent les coûts de stockage Fail-safe pour les pipelines de staging intermédiaire.

Par défaut : PERMANENT

Conseils de pro et bonnes practices

Plutôt que d'aplatir inutilement des

Plutôt que d'aplatir inutilement des structures JSON imbriquées complexes en de multiples colonnes relationnelles peu denses, stockez-les dans une colonne de type VARIANT. Snowflake segmente et compresse automatiquement les sous-champs en colonnes virtuelles au sein de ses micro-partitions, offrant des performances d'interrogation comparables à des colonnes relationnelles standard.

Snowflake convertit automatiquement

Snowflake convertit automatiquement tous les identifiants sans guillemets en lettres majuscules. Définir des colonnes en minuscules entre guillemets contraint les outils d'analyse (dbt, Looker, Tableau) à échapper chaque référence avec des guillemets doubles. Choisissez UPPERCASE pour simplifier l'écriture SQL.

Pour vos tables de débarquement

Pour vos tables de débarquement Snowpipe ou vos étapes intermédiaires de transformation, appliquez la directive CREATE TRANSIENT TABLE. Vous conservez 1 jour de Time Travel tout en éliminant les 7 jours de rétention Fail-safe, évitant ainsi des coûts de stockage superflus sur des données volatiles.

Dans Snowflake

Dans Snowflake, un champ VARCHAR non paramétré (plafonné par défaut à 16 Mo) n'entraîne aucune pénalité en mémoire ni sur le stockage sur disque grâce à la compression colonnaire. Cela élimine les blocages de pipeline causés par des chaînes imprévues dépassant une limite artificielle.

Pièges courants et dépannage

Noms de clés contenant des tirets ou des mots réservés provoquant des erreurs de syntaxe

Si des clés JSON comportent des tirets, des espaces ou des mots réservés SQL (ex. 'order', 'date'), activez l'option PRESERVE pour encadrer les noms de colonnes de guillemets doubles ("user-id" VARCHAR) ou normalisez les clés en remplaçant les caractères non conformes par des tirets bas (_).

Inférence erronée en nombre entier (NUMBER) qui tronque les décimales futures

Si votre échantillon JSON ne contient que des valeurs entières pour des champs financiers ou de mesure susceptibles d'accueillir des décimales en production, forcez la définition de colonne vers FLOAT ou NUMBER(18,4).

Types disparates au sein d'un même échantillon de tableau JSON

Lorsqu'un champ contient des entiers dans certains objets et des chaînes dans d'autres, convertissez la colonne cible en VARCHAR ou conservez la structure en VARIANT pour prévenir tout échec lors du chargement.

Foire aux questions (FAQ)

Pourquoi préférer le type VARIANT à un aplatissement complet des clés JSON ?▼

Le type de données VARIANT de Snowflake est spécialement optimisé pour les structures semi-structurées. Lors du chargement, Snowflake détecte les attributs récurrents et les stocke sous forme colonnaire indexée au sein des micro-partitions. Vous bénéficiez ainsi de la vitesse d'interrogation du SQL traditionnel (ex. `payload:client.nom::STRING`) tout en laissant le schéma évoluer sans modification de table.

Comment Snowflake gère-t-il la casse des identifiants de colonnes ?▼

Tous les identifiants créés sans guillemets sont convertis en majuscules (UPPERCASE). Seuls les identifiants délimités par des guillemets doubles conservent les minuscules, ce qui exige dès lors l'utilisation obligatoire de guillemets dans l'ensemble des requêtes d'analyse ultérieures.

Quelle est la nuance entre TIMESTAMP_NTZ et TIMESTAMP_TZ pour l'ingestion JSON ?▼

TIMESTAMP_NTZ (No Time Zone) stocke la date et l'heure sans fuseau horaire, ce qui en fait le choix privilégié lorsque vos horodatages sont déjà convertis en UTC. TIMESTAMP_TZ conserve le décalage horaire présent dans la chaîne ISO 8601 originale, utile pour tracer les fuseaux d'origine sans conversion immédiate.

Le fait de ne pas limiter la taille d'un VARCHAR pénalise-t-il les performances dans Snowflake ?▼

Non. Contrairement aux bases relationnelles classiques qui préallouent des tampons de mémoire de taille fixe, Snowflake stocke les données dans des micro-partitions colonnaires compressées. Un VARCHAR(16777216) n'occupe que l'espace strictement nécessaire aux octets réels stockés.

Le DDL produit est-il directement utilisable avec Snowpipe et la commande COPY INTO ?▼

Oui. Le schéma DDL généré s'intègre immédiatement aux commandes COPY INTO (notamment avec la clause `MATCH_BY_COLUMN_NAME = CASE_INSENSITIVE`) ainsi qu'aux processus d'ingestion automatisée en continu via Snowpipe.

Outils et utilitaires connexes

Tous les outils →
Guide Développeur : Générateur de Variables et Locals Terraform HCL depuis JSON / YAMLDéveloppement

Convertissez des structures JSON et YAML en contraintes de types HCL Terraform (type = object({...})), valeurs par défaut, blocs locals et fichiers terraform.tfvars.

Ouvrir l'outil→
Guide Développeur : Convertisseur OpenAPI / Swagger vers GraphQL SDLDéveloppement

Convertissez les points de terminaison REST, corps de requête et schémas JSON OpenAPI 3.0/3.1 et Swagger 2.0 en types, requêtes, mutations et entrées GraphQL SDL.

Ouvrir l'outil→
Guide développeur du générateur de schémas TypeScript TypeBox depuis SQL DDLDéveloppement

Convertissez les instructions SQL CREATE TABLE en schémas de validation à l'exécution @sinclair/typebox utilisant Type.Object, Type.String, Type.Number et Type.Optional.

Ouvrir l'outil→
Guide Développeur du Générateur de Code cURL vers Rust (reqwest & tokio)Développement

Convertissez des commandes cURL en requêtes HTTP asynchrones et idiomatiques en Rust à l'aide de reqwest, serde_json, d'en-têtes personnalisés et du runtime Tokio.

Ouvrir l'outil→
Guide développeur du générateur de code cURL vers Ruby (Net::HTTP & Faraday)Développement

Convertissez vos requêtes cURL en code Ruby propre et idiomatique avec Net::HTTP, URI, Faraday et la gestion native du JSON.

Ouvrir l'outil→
Générateur de NetworkPolicy K8S Guide DéveloppeurDéveloppement

Référence technique pour générer des manifestes Kubernetes NetworkPolicy déclaratifs, l'isolation de pods zero-trust, les règles d'ingress/egress, les blocs CIDR et les ports multiples.

Ouvrir l'outil→