メインコンテンツまでスキップ

REFRESHポリシー条項(パイプライン)

更新ポリシーをマテリアライズドビューに追加し、いつ更新を増分するかを制御します。 CREATE MATERIALIZED VIEW (パイプライン)ステートメントに適用されます。

増分化について詳しくは、 「マテリアライズドビューの増分更新」を参照してください。 Databricks SQL のEXPLAIN MATERIALIZED VIEWステートメントを使用して、SQL クエリが増分可能かどうかを確認できます。EXPLAIN MATERIALIZED VIEWを参照してください。

構文

SQL
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を参照してください。

SQL
-- 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;