REFRESHポリシー条項(パイプライン)
ベータ版
この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。
更新ポリシーをマテリアライズドビューに追加し、いつ更新を増分するかを制御します。 CREATE MATERIALIZED VIEW (パイプライン)ステートメントに適用されます。
増分化について詳しくは、 「マテリアライズドビューの増分更新」を参照してください。 Databricks SQL のEXPLAIN CREATE MATERIALIZED VIEWステートメントを使用して、SQL クエリが増分可能かどうかを確認できます。EXPLAIN CREATE MATERIALIZED VIEW を参照してください。
構文
REFRESH POLICY refresh_policy
refresh_policy:
AUTO | INCREMENTAL | INCREMENTAL STRICT | FULL
パラメーター
-
リフレッシュポリシー
マテリアライズドビューの更新ポリシーを定義します。
REFRESH POLICYが省略された場合、AUTOがデフォルトのポリシーになります。更新ポリシーは、更新がマテリアライズドビューの増分をどのように処理するかを定義します。
-
AUTOシステムはコスト モデルに基づいて、増分更新または完全更新を自動的に選択します。
-
状態 | 挙動 |
|---|---|
更新には増分を使用できます。 | コスト モデルを使用して、増分またはフルのどれが安価であるかを判断します。 |
増分更新は使用できません。 | 完全な更新を実行します。 |
作成または再初期化が必要(たとえば、スキーマの変更時) | 完全な更新を実行します。 |
-
INCREMENTALシステムは可能な場合は増分更新を使用します。
CREATEでは、クエリを増分化できない場合、作成ステートメントは失敗します。
状態 | 挙動 |
|---|---|
更新には増分を使用できます。 | 増分更新を実行します。 |
増分更新は使用できません。 | 完全な更新を実行します。 |
作成または再初期化が必要ですが、クエリの増分化は可能です。 | 完全な更新を実行します。 |
作成または再初期化が必要であり、クエリの増分化は不可能です。 | 操作は失敗します。 |
-
INCREMENTAL STRICTシステムは増分更新を使用します。
CREATEでは、クエリを増分化できない場合、作成ステートメントは失敗します。
状態 | 挙動 |
|---|---|
更新には増分を使用できます。 | 増分更新を実行します。 |
増分更新は使用できません。 | 更新に失敗しました。 |
作成または再初期化が必要ですが、クエリの増分化は可能です。 | 完全な更新を実行します。 |
作成または再初期化が必要であり、クエリの増分化は不可能です。 | 操作は失敗します。 |
-
FULLシステムは常に完全な更新を使用します。
状態 | 挙動 |
|---|---|
更新には増分を使用できます。 | 完全な更新を実行します。 |
増分更新は使用できません。 | 完全な更新を実行します。 |
作成または再初期化が必要です。 | 完全な更新を実行します。 |
失敗時の行動
更新ポリシー ( REFRESH POLICY INCREMENTAL (STRICT)の場合) を満たせないために更新が失敗すると、システムは増分可能でない理由を説明する詳細情報とともにエラー クラスMATERIALIZED_VIEW_NOT_INCREMENTALIZABLEを返します。
AGGREGATE_NOT_TOP_NODE: 上記の複雑な式を含むGROUP BYはサポートされていません。EXPRESSION_NOT_DETERMINSTIC: クエリでは、RANDのような非決定論的関数が使用されています。INPUT_NOT_IN_DELTA: 1 つ以上のソース データセットが Delta テーブルではありません。OPERATOR_NOT_INCREMENTALIZABLE: 複雑な結合などの演算子により、増分化が防止されます。ROW_TRACKING_NOT_ENABLED: 行追跡を必要とするソース テーブルでは行追跡が有効になっていません。SUBQUERY_EXPRESSION_NOT_INCREMENTALIZABLE: クエリ内の 1 つ以上のサブクエリは増分可能ではありません。UDF_NOT_DETERMINISTIC: 式で使用されている 1 つ以上の UDF が決定論的としてマークされていません。WINDOW_WITHOUT_PARTITION_BY:PARTITION_BYのないウィンドウ仕様は増分可能ではありません。
クエリが増分可能になる理由を理解するには、 「マテリアライズドビューの増分更新」を参照してください。
SQL クエリが増分可能かどうかを確認するには、Databricks SQL のEXPLAIN CREATE MATERIALIZED VIEWステートメントを使用します。EXPLAIN CREATE MATERIALIZED VIEW を参照してください。
例
-- Create a materialized view with an incremental policy
CREATE OR REFRESH MATERIALIZED VIEW my_mv
REFRESH POLICY INCREMENTAL
AS SELECT a, sum(b) FROM my_catalog.example.my_table GROUP BY a;