Dynamic Tables

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

Emily Melhuish

Technical Curriculum Developer, Snowflake

Dynamic Tables เทียบกับ Streams และ Tasks

Dynamic Tables:

Screenshot 2026-05-11 at 11.14.23 am.png

  • ลดความซับซ้อนของ Pipeline ด้วย SQL แบบ Declarative
  • รีเฟรชอัตโนมัติ
  • Snowflake ตรวจจับ กำหนดเวลา และรวมข้อมูลให้

Streams และ Tasks:

Screenshot 2026-05-11 at 11.14.13 am.png

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

Dynamic Tables คืออะไร?

การทำงานอัตโนมัติแบบ Declarative

  • เนื้อหากำหนดด้วย Query SELECT — ระบุผลลัพธ์ที่ต้องการ Snowflake จัดการรีเฟรชให้
  • ไม่ต้องตั้งค่า Stream หรือกำหนดเวลา Task
CREATE DYNAMIC TABLE logistics.delivery_summary
  TARGET_LAG = '1 hour'
  WAREHOUSE = harbr_wh
AS
  SELECT region, COUNT(*) AS shipments,
         AVG(delivery_days) AS avg_days
  FROM logistics.shipments GROUP BY region;
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

TARGET_LAG: ลด Staleness

สัญญาความสดใหม่ระหว่างคุณและ Snowflake

ค่า TARGET_LAG ผล
'5 minutes' ข้อมูลล้าช้าไม่เกิน 5 นาที — รีเฟรชบ่อย
'1 hour' รีเฟรชน้อยลง — ใช้ Compute น้อยกว่า
DOWNSTREAM อนุมาน Lag จาก Dependent ถัดไป — เหมาะสำหรับตารางที่เชื่อมต่อกัน
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Full เทียบกับ Incremental Refresh

การรีเฟรชแบบ Incremental

  • ติดตามเฉพาะแถวต้นทางที่เปลี่ยนแปลง
  • รีเฟรชเฉพาะแถวที่ได้รับผลกระทบ — เร็วและประหยัดกว่า
-- Incremental-friendly: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

การรีเฟรชแบบ Full

  • ประมวลผล Query ทั้งหมดใหม่
  • จำเป็นสำหรับ Aggregation และ Set Operation บางประเภท
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

การเชื่อมต่อ Dynamic Tables

แผนภาพ Pipeline — delivery_events (ต้นทาง) → cleaned_events (target_lag = DOWNSTREAM) → delivery_summary (target_lag = 1 HOUR)

  • แต่ละการแปลงข้อมูลคือ Dynamic Table แยกกัน พร้อม Query ของตนเอง
  • การรีเฟรชจะแพร่กระจายโดยอัตโนมัติตลอด Chain
  • DOWNSTREAM จะเลื่อน Lag ตามที่ตารางถัดไปต้องการ — ไม่รีเฟรชเกินจำเป็น
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

Dynamic Tables เทียบกับ Streams และ Tasks

Dynamic Tables: แบบ Declarative

  • ระบุผลลัพธ์ที่ต้องการ Snowflake จัดการรีเฟรชให้
  • เหมาะสำหรับ Analytics/Reporting Layer
-- Declare the result for Snowflake 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Streams + Tasks: แบบ Imperative

  • ควบคุมสิ่งที่รันและเวลาที่รัน
  • เหมาะสำหรับ Logic ที่ซับซ้อนและ Operational Pipeline
-- You control every step
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

DYNAMIC_TABLE_REFRESH_HISTORY

SELECT name, state, refresh_start_time, refresh_end_time
FROM TABLE (
    INFORMATION_SCHEMA.DYNAMIC_TABLE_REFRESH_HISTORY (
      NAME_PREFIX => 'HARBR_DB.DELIVERY_SUMMARY.', ERROR_ONLY => TRUE
    )
  )
ORDER BY name, data_timestamp;
NAME TRIGGER STATE START END
DELIVERY_SUMMARY SCHEDULED SUCCEEDED 2026-03-01 05:00:00 2024-03-01 05:00:08
DELIVERY_SUMMARY SCHEDULED FAILED 2026-03-01 04:00:00 2024-03-01 04:00:03
การทำให้ Data Pipeline เป็นอัตโนมัติใน Snowflake

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

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

Preparing Video For Download...