串流與變更資料擷取(CDC)

在 Snowflake 進行資料管線自動化

Emily Melhuish

Technical Curriculum Developer, Snowflake

只處理有變更的資料

CDC: Change Data Capture(變更資料擷取) 兩種資料處理方式的對照

在 Snowflake 進行資料管線自動化

Streams(串流)

串流能做什麼

  • 追蹤來源資料表 {{1}} 上的每次 INSERT、UPDATE、DELETE。

Screenshot 2026-05-11 at 10.50.31 am.png

  • 維持連續變更記錄——不重複資料
  • 一旦被消費,偏移量會前進;下次讀取從最新開始
1 * Snowflake Learning Resource
在 Snowflake 進行資料管線自動化

串流類型

 

串流類型 捕捉內容 最適用於
Standard 所有資料表與檢視,且記錄所有 DML 變更——追蹤 insert、update、delete 任一列都可能變更的資料表(如 shipments)
Append-only 除外部表以外的所有資料表與檢視——僅追蹤列插入 僅插入一次的資料表(如 delivery events),效率更高
Insert-only 外部管理的 Apache Iceberg 與外部表——僅追蹤列插入 外部表

Directory tables 會呈現某個 stage 的檔案中繼資料(名稱、大小、最後修改時間戳)

在 Snowflake 進行資料管線自動化

建立串流

在 shipments 資料表上建立 Standard 串流

CREATE STREAM shipments_stream
  ON TABLE logistics.shipments;

在 delivery events 資料表上建立 Append-only 串流

CREATE STREAM delivery_events_stream
  ON TABLE logistics.delivery_events
  APPEND_ONLY = TRUE;
在 Snowflake 進行資料管線自動化

串流的中繼資料欄位

SELECT product, quantity, METADATA$ACTION, METADATA$ISUPDATE, METADATA$ROW_ID
FROM shipments_stream;
  • METADATA$ACTION:INSERT 或 DELETE
  • METADATA$ISUPDATE:當屬於更新成對紀錄時為 TRUE
  • METADATA$ROW_ID:唯一的實體列識別碼
  • 更新會以一組 DELETE + INSERT 出現,且兩者皆有 METADATA$ISUPDATE = TRUE 標記

串流中繼資料欄位示意,顯示 METADATA$ACTION、METADATA$ISUPDATE、METADATA$ROW_ID 與範例資料

在 Snowflake 進行資料管線自動化

串流偏移量(Offset)

時間軸圖——建立串流(偏移量從此開始)→ 來源表發生變更(串流累積紀錄)→ 在交易中消費串流(偏移量前進至現在)

在 Snowflake 進行資料管線自動化

管線中的串流:總覽

  • 串流可與任務配對——Snowflake 物件,可排程執行 SQL
  • 任務只讀取變更列;在 10M 列時:2 秒對比 2 分鐘

Screenshot 2026-05-11 at 10.48.51 am.png

1 * Snowflake Learning Resource
在 Snowflake 進行資料管線自動化

管線中的串流:查詢範例

  • 串流可與任務配對——Snowflake 物件,可排程執行 SQL
  • 任務只讀取變更列;在 10M 列時:2 秒對比 2 分鐘
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';
在 Snowflake 進行資料管線自動化

一起來練習吧!

在 Snowflake 進行資料管線自動化

Preparing Video For Download...