Snowflake のロゴ

Snowflake / リリースノート / 2026/07/16 / 重要

動的テーブルの増分更新がVOLATILE UDFをサポート

datadeveloper-tools

公式リリースノート

Snowflake 動的テーブルの増分更新で、VOLATILE scalar UDFが一般提供になりました。Python、Java、Scala、JavaScript、SQLのscalar UDFが対象です。

今回の更新で変わること

これまでVOLATILEとして扱われるUDFは、同じ入力でも呼び出しごとに結果が変わり得るため、差分だけを再計算する増分更新との組み合わせに制約がありました。今回、動的テーブルのINCREMENTALAUTOADAPTIVE 更新モードで利用できるようになり、UDFを含む変換でも全体更新を避けられる範囲が広がります。対応言語はPython、Java、Scala、JavaScript、SQLです。

重要な制約として、増分更新でVOLATILE UDFを置けるのはSELECT句だけです。フィルター、結合条件、グループ化など、どの行が差分対象になるかを決める位置へ自由に使えるわけではありません。非決定的な値が行の選別やキーへ影響すると、同じ基礎データでも更新ごとに集合が変わり、増分の意味を安定させにくいためです。既存クエリを移す際はUDFの位置を確認し、公式の対応クエリ・関数一覧と照合します。

また、「VOLATILEをサポート」は結果の再現性を保証するものではありません。現在時刻、乱数、外部状態、セッション情報などへ依存するUDFは、いつ再評価されたかで値が変わります。動的テーブルの目標遅延と更新履歴を踏まえ、監査や再計算で同じ結果が必要な列には使わない判断も必要です。AUTOADAPTIVEで実際に選ばれた更新方式、UDF実行費用、失敗時の全体更新への影響を代表データで測り、非決定性を許容できる派生列へ限定するのが安全です。

現在時刻を返すUDFなどで更新前後の値を比較し、差分対象外の行が意図せず書き換わらないことも確かめます。

更新失敗後に再試行した場合の値の変化も記録し、下流利用者が非決定的な列を識別できるようにします。

影響を受ける人

動的テーブルにUDFを組み込むデータエンジニア、複数言語のUDFを管理する開発者、更新結果の再現性を監査するチームに関係します。

実務で確認したいこと

UDFがSELECT句内にあること、外部状態への依存、再評価時の期待値を確認します。INCREMENTALAUTOADAPTIVEで更新履歴、費用、結果差を比較し、再現性が必要な列は決定的な式へ分離します。