Query’s op semi-gestructureerde data

Automatisering van datapijplijnen in Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Semi-gestructureerde data laden

data laden.png

1 * Snowflake Learning Material
Automatisering van datapijplijnen in Snowflake

Verschillende datavormen beheren

Vervoerder A Carrier A JSON

Vervoerder B

Carrier B JSON

Automatisering van datapijplijnen in Snowflake

Transformatievoorbeeld

Screenshot 11-05-2026 om 17:56.png

Automatisering van datapijplijnen in Snowflake

Snowflake-datatypen

Categorie Typen Voorbeeld
Numeriek NUMBER, INT, FLOAT credits_used NUMBER(10,2)
Tekst VARCHAR, STRING, TEXT carrier_name VARCHAR
Datum / tijd DATE, TIME, TIMESTAMP dispatch_date DATE
Booleaans BOOLEAN is_active BOOLEAN
Semi-gestructureerd VARIANT, OBJECT, ARRAY event_payload VARIANT
Automatisering van datapijplijnen in Snowflake

Het type VARIANT

  • VARIANT slaat semi-gestructureerde data ongewijzigd op: geen schema nodig
  • Laad JSON, Parquet, Avro, ORC of XML direct
  • Structuur wordt bepaald bij queryen, niet bij laden (schema-on-read)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

VARIANT-woordwolk met alle typen semi-gestructureerde data die VARIANT bevat: JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

Automatisering van datapijplijnen in Snowflake

JSON navigeren

Voorbeeld-JSON

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

JSON navigeren

Structuur doorlopen:

<kolom>:<niveau1_element>.<niveau2_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;
Automatisering van datapijplijnen in Snowflake

Arrays naar rijen met FLATTEN

Flatten.png

Automatisering van datapijplijnen in Snowflake

LATERAL FLATTEN gebruiken

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;

Flatten.png

Automatisering van datapijplijnen in Snowflake

Laten we oefenen!

Automatisering van datapijplijnen in Snowflake

Preparing Video For Download...