การสืบค้นข้อมูลกึ่งโครงสร้าง

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

การโหลดข้อมูลกึ่งโครงสร้าง

data loading.png

1 * Snowflake Learning Material
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การจัดการข้อมูลที่มีโครงสร้างต่างกัน

Carrier A JSON ของ Carrier A

Carrier B

JSON ของ Carrier B

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ตัวอย่างการแปลงข้อมูล

Screenshot 2026-05-11 at 5.56.34 pm.png

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ชนิดข้อมูลใน Snowflake

หมวดหมู่ ประเภท ตัวอย่าง
ตัวเลข NUMBER, INT, FLOAT credits_used NUMBER(10,2)
ข้อความ VARCHAR, STRING, TEXT carrier_name VARCHAR
วันที่ / เวลา DATE, TIME, TIMESTAMP dispatch_date DATE
บูลีน BOOLEAN is_active BOOLEAN
กึ่งโครงสร้าง VARIANT, OBJECT, ARRAY event_payload VARIANT
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

ชนิดข้อมูล VARIANT

  • VARIANT เก็บข้อมูลกึ่งโครงสร้างตามเดิม: ไม่ต้องกำหนด schema
  • โหลด JSON, Parquet, Avro, ORC หรือ XML ได้โดยตรง
  • โครงสร้างข้อมูลจะถูกกำหนดตอน สืบค้น ไม่ใช่ตอนโหลด (schema-on-read)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

ภาพ word cloud ของ VARIANT แสดงประเภทข้อมูลกึ่งโครงสร้างที่ VARIANT รองรับ ได้แก่ JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การนำทาง JSON

ตัวอย่าง JSON

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

การนำทาง JSON

การเข้าถึงโครงสร้าง:

<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;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การแปลง Array เป็นแถวด้วย FLATTEN

Flatten.png

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การใช้ 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

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

มาฝึกกันเลย!

การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Preparing Video For Download...