APPLY CHANGES INTO
は Databricks SQL(特に Delta Live Tables)で使われる構文で、
変更データキャプチャ(CDC: Change Data Capture)を簡単にターゲットテーブルへ反映するためのコマンドです。
目的
通常、CDC データ(INSERT、UPDATE、DELETE を含む変更ログ)をテーブルに適用するには、
複雑な MERGE INTO
を書いてキーや処理順序を考慮する必要があります。
APPLY CHANGES INTO
を使うと、
主キーと変更の種類を指定するだけで、自動的にマージ処理をしてくれるため、
シンプルに CDC 対応のストリームパイプラインが作れます。
基本構文
APPLY CHANGES INTO target_table
FROM source_stream
KEYS (id)
SEQUENCE BY updated_at
COLUMNS * EXCEPT (op)
STORED AS SCD TYPE 1;
主な句の意味
句 | 役割 |
---|---|
APPLY CHANGES INTO target_table |
CDC を適用する対象テーブル |
FROM source_stream |
CDC データのストリーム(INSERT/UPDATE/DELETE を含む) |
KEYS (id) |
一意に行を識別する主キー |
SEQUENCE BY updated_at |
変更適用の順序を決めるカラム(タイムスタンプやバージョン番号) |
COLUMNS * EXCEPT (op) |
適用するカラムの指定(ここでは op カラムを除外) |
STORED AS SCD TYPE 1 |
保存方法。SCD TYPE 1 は履歴を保持せず上書き更新 |
処理の流れ
-
source_stream に CDC データ(例:Debezium や Kafka 経由で取得)が入ってくる
-
APPLY CHANGES INTO
がop
(操作種別)を見て- INSERT → 新規行追加
- UPDATE → 主キー一致の行を上書き
- DELETE → 主キー一致の行を削除
-
指定の順序 (
SEQUENCE BY
) に従って適用
メリット
- 手動で
MERGE INTO
を書かなくてもよい - CDC の適用が簡潔になり、エラーが減る
- Delta Live Tables と組み合わせることでストリーム処理が自動化される