Truy vấn dữ liệu bán cấu trúc

Tự động hóa Data Pipeline trong Snowflake

Emily Melhuish

Technical Curriculum Developer, Snowflake

Nạp dữ liệu bán cấu trúc

tải dữ liệu.png

1 * Tài liệu học Snowflake
Tự động hóa Data Pipeline trong Snowflake

Quản lý các dạng dữ liệu khác nhau

Nhà vận chuyển A JSON Nhà vận chuyển A

Nhà vận chuyển B

JSON Nhà vận chuyển B

Tự động hóa Data Pipeline trong Snowflake

Ví dụ chuyển đổi

Ảnh chụp màn hình 2026-05-11 lúc 5.56.34 pm.png

Tự động hóa Data Pipeline trong Snowflake

Kiểu dữ liệu Snowflake

Danh mục Kiểu Ví dụ
Số NUMBER, INT, FLOAT credits_used NUMBER(10,2)
Văn bản VARCHAR, STRING, TEXT carrier_name VARCHAR
Ngày / Giờ DATE, TIME, TIMESTAMP dispatch_date DATE
Boolean BOOLEAN is_active BOOLEAN
Bán cấu trúc VARIANT, OBJECT, ARRAY event_payload VARIANT
Tự động hóa Data Pipeline trong Snowflake

Kiểu VARIANT

  • VARIANT lưu dữ liệu bán cấu trúc nguyên dạng: không cần schema
  • Nạp trực tiếp JSON, Parquet, Avro, ORC hoặc XML
  • Cấu trúc được xác định lúc truy vấn, không phải lúc nạp (schema-on-read)
COPY INTO shipment_events
FROM @harbr_stage/events/
FILE_FORMAT = (TYPE = 'JSON');

Đám mây từ VARIANT hiển thị các kiểu dữ liệu bán cấu trúc mà VARIANT chứa: JSON, ARRAY, OBJECT, AVRO, PARQUET, SEMI-STRUCTURED

Tự động hóa Data Pipeline trong Snowflake

Duyệt JSON

JSON ví dụ

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

Duyệt JSON

Duyệt cấu trúc:

<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;
Tự động hóa Data Pipeline trong Snowflake

Chuyển mảng thành hàng với FLATTEN

Flatten.png

Tự động hóa Data Pipeline trong Snowflake

Dùng 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

Tự động hóa Data Pipeline trong Snowflake

Ayo berlatih!

Tự động hóa Data Pipeline trong Snowflake

Preparing Video For Download...