マテリアライズドビューの更新操作

マテリアライズド ビューは、1 つ以上の基本テーブルに対する SQL クエリの結果を含むデータベース オブジェクトです。 一部のマテリアライズドビューは、増分リフレッシュでき、ベーステーブルから変更を自動的かつ増分的に伝播できます。 この記事では、マテリアライズド ビューに適用できる更新操作について説明します。

更新タイプ

更新操作は次のいずれかの種類になります。

  • 増分更新: 増分更新では、最後の更新後の基になるデータの変更が処理され、そのデータがテーブルに追加されます。 ベーステーブルと含まれる操作によっては、特定のタイプのマテリアライズドビューのみを増分リフレッシュできます。

  • 完全更新: 完全更新ではテーブルが切り捨てられ、ソースで使用可能なすべてのデータが最新の定義で再処理されます。 完全な更新によって既存のデータが切り捨てられるため、 Kafkaなど、データ履歴全体を保持しない、または保持期間が短い ソース で完全な更新を実行することはお勧めしません。 ソースでデータが利用できなくなった場合、古いデータを回復できない可能性があります。

マテリアライズドビューの更新方法

マテリアライズド ビューは、Delta Live Tables パイプラインを自動的に作成して使用し、更新操作を処理します。 Delta Live Tables パイプラインは、継続実行モードまたはトリガー実行モードのいずれかを使用します。 マテリアライズドビューは、どちらの実行モードでも更新できます。 連続実行モードで動作しているときに不要な処理を回避するために、パイプラインは依存する Delta テーブルを自動的に監視し、依存テーブルの内容が変更された場合にのみ更新を実行します。 「Delta Live Tables パイプラインとは何ですか?」を参照してください。

注:

Delta Live Tables Deltaデータソース以外の変更を検出できません。 テーブルは引き続き定期的に更新されますが、コンピュート上で発生する増分処理が過度に再計算されて遅くなるのを防ぐために、トリガー間隔が長くなっています。

デフォルトでは、更新操作は同期的に実行されます。 更新操作を非同期で実行するように設定することもできます。 各アプローチに関連する動作は次のとおりです。

  • 同期: 同期更新は、更新操作が完了するまで他の操作をブロックします。 これにより、ワークフローなどのオーケストレーション ツールで更新操作を順序付けることができます。 マテリアライズド ビューをワークフローでオーケストレーションするには、 SQLタスク タイプを使用します。 Databricks Workflowsの概要」を参照してください。

  • 非同期: 非同期更新は、マテリアライズド ビューの更新が開始されるとDelta Live Tables上でバックグラウンド ジョブを開始し、データのロードが完了する前にコマンドが戻ります。 Delta Live Tables パイプラインが更新を管理するため、マテリアライズド ビューの作成に使用される Databricks SQL ウェアハウスは使用されません。 更新操作中に実行する必要はありません。

マテリアライズドビューの増分更新のサポート

次の表は、SQL キーワードまたは句による増分更新のサポートを示しています。

SQLキーワードまたは句

増分更新のサポート

SELECT

決定論的な組み込み関数と不変のユーザー定義関数 (UDF) を含む式がサポートされています。

WITH

はい、共通テーブル式はサポートされています。

FROM

サポートされているベーステーブルには、 Deltaテーブル、マテリアライズドビュー、ストリーミングテーブルが含まれます。

EXPECTATIONS

いいえ。期待値を使用するマテリアライズドビューは、常に完全に更新されます。

UNION ALL

いいえ

INNER JOIN

いいえ

LEFT JOIN

いいえ

GROUP BY

はい

WHERE, HAVING

WHEREHAVING などのフィルター句がサポートされています。

OVER

いいえ

QUALIFY

いいえ

注:

CURRENT_TIMESTAMPなどの非決定的関数はサポートされていません。