Dynamic Tables

在 Snowflake 進行資料管線自動化

Emily Melhuish

Technical Curriculum Developer, Snowflake

Dynamic Tables vs Streams and Tasks

Dynamic Tables:

2026-05-11 上午 11:14:23 的螢幕擷圖.png

  • 以 SQL 宣告式語句簡化資料管線轉換
  • 自動重新整理流程
  • Snowflake 偵測、排程並合併

Streams 與 Tasks:

2026-05-11 上午 11:14:13 的螢幕擷圖.png

1 * Snowflake 學習素材
在 Snowflake 進行資料管線自動化

什麼是 Dynamic Tables?

宣告式管線自動化

  • 內容以 SELECT 查詢定義——你描述結果,Snowflake 負責重新整理
  • 不需設定 stream,也不用排程 tasks
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;
在 Snowflake 進行資料管線自動化

TARGET_LAG:降低陳舊度

你與 Snowflake 的新鮮度約定

TARGET_LAG 值 效果
'5 minutes' 表格最多僅落後 5 分鐘—頻繁重新整理
'1 hour' 較少重新整理—計算資源較省
DOWNSTREAM 由下游相依推斷延遲—適合串接表格
在 Snowflake 進行資料管線自動化

完整 vs 增量重新整理

增量式重新整理

  • 精確追蹤變更的來源列
  • 僅重新整理受影響列——大規模更快、更省
-- 適合增量: 
SELECT region, COUNT(*) AS shipments
FROM logistics.shipments 
GROUP BY region;

完整重新整理

  • 重新處理整個查詢
  • 某些彙總與集合運算必須使用
在 Snowflake 進行資料管線自動化

串接 Dynamic Tables

管線示意圖 — delivery_events(來源)→ cleaned_events(target_lag = DOWNSTREAM)→ delivery_summary(target_lag = 1 HOUR)

  • 每個轉換都是獨立的 dynamic table,含自有查詢
  • 重新整理會沿鏈自動傳遞
  • DOWNSTREAM 依下游需求決定延遲—避免過度刷新
在 Snowflake 進行資料管線自動化

Dynamic Tables vs Streams and Tasks

Dynamic tables:宣告式

  • 只需描述輸出;Snowflake 管理重新整理,容易維運
  • 最適合分析/報表層
-- 向 Snowflake 宣告結果 
CREATE DYNAMIC TABLE logistics.summary
  TARGET_LAG = '1 hour' 
  WAREHOUSE = harbr_wh
AS SELECT region, COUNT(*) 
FROM shipments 
GROUP BY 1;

Streams + Tasks:指令式

  • 控制執行內容與時機
  • 適用於分支的複雜自訂邏輯與營運管線
-- 你掌握每一步
CREATE TASK process_events 
  SCHEDULE = '5 MINUTE'
  WHEN SYSTEM$STREAM_HAS_DATA
  ('events_stream')
AS CALL logistics.process_new_events();
在 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
在 Snowflake 進行資料管線自動化

一起來練習吧!

在 Snowflake 進行資料管線自動化

Preparing Video For Download...