Kueri Data Semi-Terstruktur

Otomatisasi Data Pipeline di Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Pemuatan Data Semi-Terstruktur

pemrosesan data.png

1 * Materi Pembelajaran Snowflake
Otomatisasi Data Pipeline di Snowflake

Mengelola Bentuk Data Berbeda

Carrier A JSON Carrier A

Carrier B

JSON Carrier B

Otomatisasi Data Pipeline di Snowflake

Contoh Transformasi

Tangkapan layar 2026-05-11 pukul 5.56.34 pm.png

Otomatisasi Data Pipeline di Snowflake

Tipe Data Snowflake

Kategori Tipe Contoh
Numerik NUMBER, INT, FLOAT credits_used NUMBER(10,2)
Teks VARCHAR, STRING, TEXT carrier_name VARCHAR
Tanggal/Waktu DATE, TIME, TIMESTAMP dispatch_date DATE
Boolean BOOLEAN is_active BOOLEAN
Semi-terstruktur VARIANT, OBJECT, ARRAY event_payload VARIANT
Otomatisasi Data Pipeline di Snowflake

Tipe VARIANT

  • VARIANT menyimpan data semi-terstruktur apa adanya: tanpa skema
  • Muat JSON, Parquet, Avro, ORC, atau XML langsung
  • Struktur data ditentukan saat kueri, bukan saat muat (schema-on-read)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

Awan kata VARIANT yang menampilkan semua tipe data semi-terstruktur yang didukung: JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

Otomatisasi Data Pipeline di Snowflake

Menavigasi JSON

Contoh JSON

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

Menavigasi JSON

Menelusuri struktur:

<kolom>:<elemen_level1>.<elemen_level2>

SELECT 
event:id::STRING AS shipment_id
, event:carrier.name::STRING AS carrier
, event:stops[0]:location::STRING 
AS first_stop 
FROM shipment_events;
Otomatisasi Data Pipeline di Snowflake

Mengubah Array jadi Baris dengan FLATTEN

Flatten.png

Otomatisasi Data Pipeline di Snowflake

Menggunakan 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;

Flatten.png

Otomatisasi Data Pipeline di Snowflake

Ayo berlatih!

Otomatisasi Data Pipeline di Snowflake

Preparing Video For Download...