การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake
CDC: Change Data Capture

หน้าที่ของ Stream

| ประเภท Stream | จับการเปลี่ยนแปลง | เหมาะสำหรับ |
|---|---|---|
| Standard | ตารางและวิวทุกประเภท & การเปลี่ยนแปลง DML ทั้งหมด - ติดตาม insert, update, delete | ตารางที่แถวใดก็ได้เปลี่ยนได้ (เช่น shipments) |
| Append-only | ตารางและวิวทุกประเภท ยกเว้น external table - ติดตามเฉพาะการ insert | ตารางที่ insert ครั้งเดียว (เช่น delivery events) - มีประสิทธิภาพกว่า |
| Insert-only | Apache Iceberg และ external table ที่จัดการภายนอก - ติดตามเฉพาะการ insert | External table |
Directory table แสดง metadata ของไฟล์สำหรับ stage (ชื่อ, ขนาด, timestamp การแก้ไขล่าสุด)
Standard stream บนตาราง shipments
CREATE STREAM shipments_stream
ON TABLE logistics.shipments;
Append-only stream บนตาราง delivery events
CREATE STREAM delivery_events_stream
ON TABLE logistics.delivery_events
APPEND_ONLY = TRUE;
SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
METADATA$ACTION: INSERT หรือ DELETEMETADATA$ISUPDATE: TRUE เมื่อเป็นส่วนหนึ่งของคู่การอัปเดตMETADATA$ROW_ID: ตัวระบุแถวทางกายภาพที่ไม่ซ้ำกันMETADATA$ISUPDATE = TRUE


CREATE TASK logistics.sync_shipments
WAREHOUSE = compute_wh
SCHEDULE = '5 MINUTE'
WHEN SYSTEM$STREAM_HAS_DATA('logistics.staging_shipments_stream')
AS
INSERT INTO logistics.shipments
SELECT shipment_id, region, carrier, delivery_days
FROM logistics.staging_shipments_stream
WHERE METADATA$ACTION = 'INSERT';
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake