REFRESHポリシー条項(パイプライン)
更新ポリシーをマテリアライズドビューに追加し、いつ更新を増分するかを制御します。 CREATE MATERIALIZED VIEW (パイプライン)ステートメントに適用されます。
増分化について詳しくは、 「マテリアライズドビューの増分更新」を参照してください。 Databricks SQL のEXPLAIN MATERIALIZED VIEWステートメントを使用して、SQL クエリが増分可能かどうかを確認できます。EXPLAIN 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を返します。例えば:
OPERATOR_NOT_SUPPORTED: 複雑な結合などの演算子により、増分化が防止されます。EXPRESSION_NOT_DETERMINSTIC: クエリでは、RANDのような非決定論的関数が使用されています。
クエリが増分可能になる理由を理解するには、 「マテリアライズドビューの増分更新」を参照してください。
SQL クエリが増分可能かどうかを確認するには、Databricks SQL のEXPLAIN MATERIALIZED VIEWステートメントを使用します。EXPLAIN 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;