Interrogation de données semi-structurées

Automatisation des pipelines de données dans Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Chargement de données semi-structurées

chargement des données.png

1 * Snowflake Learning Material
Automatisation des pipelines de données dans Snowflake

Gérer différentes formes de données

Transporteur A JSON du transporteur A

Transporteur B

JSON du transporteur B

Automatisation des pipelines de données dans Snowflake

Exemple de transformation

Capture d’écran 2026-05-11 à 17:56.png

Automatisation des pipelines de données dans Snowflake

Types de données Snowflake

Catégorie Types Exemple
Numérique NUMBER, INT, FLOAT credits_used NUMBER(10,2)
Texte VARCHAR, STRING, TEXT carrier_name VARCHAR
Date / Heure DATE, TIME, TIMESTAMP dispatch_date DATE
Booléen BOOLEAN is_active BOOLEAN
Semi-structuré VARIANT, OBJECT, ARRAY event_payload VARIANT
Automatisation des pipelines de données dans Snowflake

Le type VARIANT

  • VARIANT stocke les données semi-structurées telles quelles : aucun schéma requis
  • Chargez JSON, Parquet, Avro, ORC ou XML directement
  • La structure est résolue au moment de la requête, pas au chargement (schéma à la lecture)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

Nuage de mots VARIANT montrant tous les types semi-structurés pris en charge : JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

Automatisation des pipelines de données dans Snowflake

Navigation dans le JSON

Exemple de JSON

{
  "shipment_id": "SHP-001",
  "carrier": { "name": "FastFreight" },
  "stops": [
    { "location": "Rotterdam Port" },
    { "location": "Amsterdam Hub" }
  ]
}

Navigation dans le JSON

Parcourir la structure :

<column>:<level1_element>.<level2_element>

SELECT 
event:id::STRING AS shipment_id
, event:carrier.name::STRING AS carrier
, event:stops[0]:location::STRING 
AS first_stop 
FROM shipment_events;
Automatisation des pipelines de données dans Snowflake

Transformer des tableaux en lignes avec FLATTEN

Aplatir.png

Automatisation des pipelines de données dans Snowflake

Utiliser LATERAL FLATTEN

SELECT 
  s.event_data:shipment_id::STRING AS shipment_id,
  f.value:location::STRING AS stop,
  f.value:arrived_at::TIMESTAMP AS arrived_at 
FROM shipment_events s,
  LATERAL FLATTEN(input => s.event_data:stops) f;

Aplatir.png

Automatisation des pipelines de données dans Snowflake

Passons à la pratique !

Automatisation des pipelines de données dans Snowflake

Preparing Video For Download...