Databricks SQLにおけるマテリアライズドビューの監視
この記事では、 Databricks SQLでマテリアライズドビューに関する更新データを監視およびクエリする方法について説明します。
カタログエクスプローラーで詳細を表示する
マテリアライズドビューに関する情報を表示する最も簡単な方法は、 カタログエクスプローラで表示することです。カタログエクスプローラ では、ログを含む更新履歴を表示したり、現在の更新のステータスを表示したりすることもできます。
マテリアライズドビューには、カタログエクスプローラで使用できないプロパティがいくつかあります。これらのプロパティの場合、またはプログラムで情報を取得するには、 DESCRIBE EXTENDED
コマンドを使用できます。
マテリアライズドビューの詳細を表示する DESCRIBE EXTENDED
マテリアライズドビューの詳細をプログラムで表示するには、 DESCRIBE EXTENDED
コマンドを使用します。これには以下が含まれます。
- 最後に完了した更新のステータス。
- 更新スケジュール。
- マテリアライズドビューの列。
- マテリアライズドビューのデータ サイズ (合計バイト単位) (カタログ エクスプローラでは使用できません)。
- マテリアライズドビューの保存場所 (カタログエクスプローラでは使用できません)。
-- As table:
DESCRIBE TABLE EXTENDED sales;
-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;
マテリアライズドビューの更新履歴の表示
マテリアライズドビューに対する REFRESH
操作のステータス (現在および過去の更新を含む) を表示するには、DLT イベントログをクエリします。
SELECT
*
FROM
event_log(TABLE(my_catalog.my_schema.sales))
WHERE
event_type = "update_progress"
ORDER BY
timestamp desc;
<fully-qualified-table-name>
を、カタログやスキーマなど、マテリアライズドビューの完全修飾名に置き換えます。
DLT イベント ログとはを参照してください。
マテリアライズドビューで発生した更新のタイプを表示する
一部のクエリは、増分的に更新できます。増分更新を実行できない場合は、代わりに完全更新が実行されます。
マテリアライズドビューの更新タイプを確認するには、イベントログを照会します。
SELECT
timestamp,
message
FROM
event_log(TABLE(my_catalog.my_schema.sales))
WHERE
event_type = 'planning_information'
ORDER BY
timestamp desc;
このコマンドの出力例:
-
- timestamp
- message
-
2025-03-21T22:23:16.497+00:00
Flow 'sales' has been planned in DLT to be executed as ROW_BASED.
更新タイプの詳細と更新の最適化方法については、「 マテリアライズドビューの増分更新」を参照してください。
クエリ履歴を使用した実行の監視
クエリ履歴ページを使用して、クエリの詳細とクエリプロファイルにアクセスできるため、ストリーミングテーブルの更新を実行するために使用される DLT パイプラインのパフォーマンスの低いクエリやボトルネックを特定できます。クエリ履歴とクエリ プロファイルで使用できる情報の種類の概要については、クエリ履歴 および クエリ プロファイルを参照してください。
プレビュー
この機能は パブリック プレビュー段階です。ワークスペース管理者は、 プレビュー ページからこの機能を有効にできます。Databricks プレビューの管理を参照してください。
マテリアライズドビューに関連するすべてのステートメントがクエリ履歴に表示されます。 [ステートメント] ドロップダウン フィルターを使用して、任意のコマンドを選択し、関連するクエリを検査できます。すべての CREATE
ステートメントの後には、DLT パイプラインで非同期に実行される REFRESH
ステートメントが続きます。通常、 REFRESH
ステートメントには、パフォーマンスの最適化に関する知見を提供する詳細なクエリ プランが含まれています。
クエリ履歴 UI で REFRESH
ステートメントにアクセスするには、次の手順を使用します。
- 左側のサイドバーで [
] をクリックして、 クエリー履歴 UI を開きます。
- ステートメント ドロップダウン・フィルターから REFRESH チェック・ボックスを選択します。
- クエリステートメントの名前をクリックすると、クエリの実行時間や集計されたメトリクスなどの概要の詳細が表示されます。
- [ クエリ プロファイルの表示 ] をクリックして、クエリ プロファイルを開きます。クエリ プロファイルのナビゲーションの詳細については、「 クエリ プロファイル」を参照してください。
- 必要に応じて、[ クエリ ソース ] セクションのリンクを使用して、関連するクエリまたはパイプラインを開きます。
CREATE MATERIALIZED VIEWを参照してください。
更新の失敗のトラブルシューティング
増分である必要があると思われる更新がいっぱいになった場合のトラブルシューティングを行うには、まず、ソース Delta テーブルで 行追跡が有効になっている ことを確認します。増分更新の詳細については、「 マテリアライズドビュー のインクリメンタル 更新のサポート」を参照してください。
更新操作は、さまざまな理由で失敗する可能性があります。例えば:
- マテリアライズドビューの所有者は、ソース テーブルへの
SELECT
アクセスを失う可能性があります。 - ソース テーブルには、マテリアライズドビュー クエリ定義と互換性のないスキーマ変更が含まれている場合があります。
マテリアライズドビューの更新の失敗をトラブルシューティングするには:
- サイドバー
カタログ をクリックします。
- 左側の [カタログ エクスプローラー] ツリーでカタログを開き、マテリアライズドビューが配置されているスキーマを選択します。
- 概要 タブの 更新の詳細を表示 リンクをクリックします。
- パイプラインの詳細ページで、下部にある イベント ログ タブで エラー をクリックし、処理中のエラーのみに絞り込みます。
- エラーをクリックすると、正確なエラーメッセージを含む詳細が表示されます。
次に、エラー メッセージの例を示します。
org.apache.spark.sql.AnalysisException: [AMBIGUOUS_REFERENCE] Reference `customer_name` is ambiguous, could be: ['p'.'customer_name', 'u'.'customer_name']. SQLSTATE: 42704