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

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

備考

ベータ版

この機能はベータ版です。ワークスペース管理者は、 プレビュー ページからこの機能へのアクセスを制御できます。「Databricks プレビューの管理」を参照してください。

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

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

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

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;