この記事では、Databricks SQL の具体化されたビューに関する更新データを監視およびクエリする方法について説明します。
1 つの具体化されたビューの詳細を表示する
1 つの具体化されたビューの詳細を表示するには、カタログ エクスプローラーを使用するか、 DESCRIBE EXTENDED 操作を使用してプログラムを使用します。 具体化されたビューの更新履歴の詳細については、イベント ログに対してクエリを実行することもできます。
カタログ エクスプローラーで詳細を表示する
具体化されたビューに関する情報にアクセスするには、 カタログ エクスプローラーで表示します。 カタログ エクスプローラーでは、SQL で作成された最新の更新状態と更新スケジュールを確認できます。 SQL で作成されたスケジュールの詳細については、 CREATE MATERIALIZED VIEWを参照してください。
カタログ エクスプローラーには、次のような各具体化されたビューの詳細が右側のパネルに表示されます。
- 現在の更新の状態 と最後の実行時刻。 実行時間、詳細なエラー、更新の種類 (具体化されたビューが完全に更新されたか増分 更新 されたか、理由など) など、更新に関する詳細を表示するには、[ 更新の詳細を表示する] をクリックします。
- 更新スケジュール。 具体化されたビューに SQL を使用して設定されたスケジュールがある場合は、スケジュールが表示されます。 スケジュールを更新するには、 ALTER MATERIALIZED VIEWを使用します。
- タグ。 カスタム タグを追加するには、[ タグの追加] をクリックします。 タグはコストの属性付けには自動的には使用されませんが、カスタム タグをコストに接続するクエリを手動で作成できます。 詳細については、 カスタム タグを使用した SQL ウェアハウスの属性コストに関するページを参照してください。
具体化されたビューには、カタログ エクスプローラーでは使用できないプロパティがあります。 これらのプロパティの場合、またはプログラムで情報を取得するには、 DESCRIBE EXTENDED コマンドを使用できます。
で詳細を表示する DESCRIBE EXTENDED
DESCRIBE EXTENDED コマンドを使用して、具体化されたビューに関する詳細をプログラムで表示できます。 これには、カタログ エクスプローラーから取得した内容以外の詳細も含まれます。 これには次のようなものがあります。
最新の完了した更新の状態。
更新スケジュール。
具体化されたビューの列。
具体化されたビューの更新の種類 (カタログ エクスプローラーでは使用できません)。
具体化されたビューのデータ サイズ (カタログ エクスプローラーでは使用できません) の合計バイト数。
具体化されたビューの保存場所 (カタログ エクスプローラーでは使用できません)。
一部の情報は、有効な場合にのみ結果に含まれます。
- クラスタリング列 (有効な場合)。
- 削除ベクトルが有効になっているかどうか (
trueの場合にのみ表示されます)。 - 行の追跡が有効かどうか (
trueの場合にのみ表示されます)。
-- As table:
DESCRIBE TABLE EXTENDED sales;
-- As a single JSON object:
DESCRIBE TABLE EXTENDED sales AS JSON;
プログラムによるイベント ログのクエリ
具体化されたビューの更新履歴、または更新が行われている詳細に関する詳細を取得するには、プログラムでイベント ログに対してクエリを実行できます。
パイプライン所有者は、他のユーザーがパイプラインのイベント ログに対してクエリを実行できるようにする ビュー を作成できます。 次のクエリでは、他のユーザーがイベント ログのクエリに使用できるビューを作成します。 このクエリでは、 TABLE 値関数を使用して、正しいイベント ログ テーブルに対してクエリを実行します。
CREATE VIEW my_event_log_view AS
SELECT *
FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>));
イベント ログ ビューに対してクエリを実行するには、次のようなクエリを使用します。
SELECT *
FROM my_event_log_view
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
パイプライン所有者としてイベント ログに直接クエリを実行するには、ビューを作成する必要はありません。
TABLE値関数を使用して、次のサンプル クエリのようにデータに直接クエリを実行できます。
SELECT *
FROM event_log(TABLE(<catalog_name>.<schema_name>.<mv_name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
イベント ログを使用したサンプル クエリの完全な一覧については、 基本的なクエリの例を参照してください。
マテリアライズドビューの実行を監視する
ワークスペース全体のパイプラインの実行を監視するには、[ ジョブとパイプライン ] ページ、 クエリ履歴 ページ、またはイベント ログに対してクエリを実行してプログラムを使用します。
UIではすべてのマテリアライズドビューの実行を表示する
[ジョブとパイプライン] ページを使用してワークスペース全体のさまざまなオーケストレーション ジョブの状態を監視する場合は、そこに作成されたすべての具体化されたビューとストリーミング テーブルを追跡することもできます。 Databricks SQL で作成された各具体化されたビューには、それをバックアップするパイプラインがあります。 アクセスできるマテリアライズド ビューとストリーミング テーブルをすべて表示するには:
- [ワークフロー] アイコンをクリック
ワークスペースの左側にある [ジョブとパイプライン] ボタン。
- [ パイプライン ] トグルをクリックして、ビューをパイプラインのみにフィルター処理します。
- [ パイプラインの種類 ] ボタンをクリックし、 MV/ST を選択して、Databricks SQL によって作成されたパイプラインのみにフィルター処理します。
- 自分がアクセスできるフィルターをクリックして、アクセス権を持つすべてのパイプラインを表示してください。
最近の実行状態の概要ビューを含め、組織全体で作成されたすべての具体化されたビューとストリーミング テーブルを表示できます。 パイプラインの名前をクリックすると、パイプライン監視の詳細ページが開き、詳細情報が表示されます。 パイプライン監視の詳細ページの詳細については、「 失敗した更新のトラブルシューティング」を参照してください。
クエリ履歴を使用して実行履歴を表示する
[クエリ履歴] タブを使い慣れている場合は、それを使用して、実行中の SQL ウェアハウスに少なくともCAN VIEWアクセスできるすべてのクエリの以前のすべての実行を表示することもできます。 クエリ履歴ページを使用すると、クエリの詳細とクエリ プロファイルにアクセスできます。これは、ストリーミング テーブルの更新の実行に使用されるパイプラインでパフォーマンスの低いクエリやボトルネックを特定するのに役立ちます。 クエリ履歴とクエリ プロファイルで使用できる情報の種類の概要については、「 Query 履歴 および Query プロファイルを参照してください。
Important
この機能は パブリック プレビュー段階です。 ワークスペース管理者は、[ プレビュー] ページからこの機能へのアクセスを制御できます。 Azure Databricks プレビューの管理を参照してください。
具体化されたビューに関連するすべてのステートメントがクエリ履歴に表示されます。
Statement ドロップダウン フィルターを使用して、任意のコマンドを選択し、関連するクエリを調べることができます。 すべての CREATE ステートメントの後に、パイプラインで非同期的に実行される REFRESH ステートメントが続きます。
REFRESHステートメントには、通常、パフォーマンスの最適化に関する分析情報を提供する詳細なクエリ プランが含まれます。
クエリ履歴 UI REFRESH ステートメントにアクセスするには、次の手順に従います。
- [
左側のサイドバーのクエリ履歴。
- [REFRESH] ドロップダウン フィルターから [] チェック ボックスをオンにします。
- クエリ ステートメントの名前をクリックすると、クエリの期間や集計されたメトリックなどの概要の詳細が表示されます。
- クエリ プロファイルを表示をクリックして、クエリ プロファイルを開きます。 クエリ プロファイルの移動の詳細については、「 Query プロファイル」を参照してください。
- 必要に応じて、 Query Source セクションのリンクを使用して、関連するクエリまたはパイプラインを開きます。
CREATE MATERIALIZED VIEWを参照してください。
失敗した更新のトラブルシューティング
マテリアライズドビュー(またはストリーミングテーブル)の更新失敗を確認するには、ジョブとパイプラインの一覧を調べてください。 失敗した更新のトラブルシューティングを行うには、パイプライン監視の詳細ページまたはイベント ログを使用します。
増分である必要があると思われる場合にいっぱいになっている更新のトラブルシューティングを行うには、まず、ソース Delta テーブルで行追跡が有効になっていることを確認します。 増分更新の詳細については、「 具体化されたビューの増分更新のサポート」を参照してください。
パイプライン監視ページから、またはプログラムでイベント ログに対してクエリを実行することで、追加の詳細を取得できます。
パイプライン監視ページの使用
失敗した具体化されたビュー (またはストリーミング テーブル) の詳細を取得するには、パイプライン監視ページを使用して問題をデバッグできます。 具体化された各ビューには、それをバックアップするパイプラインがあります。 パイプライン監視ページには、次のような情報が含まれています。
- 最後の実行の状態と実行履歴。
- 最後の実行時間。
- 具体化されたビューが完全に更新されたか、増分更新されたか。 具体化されたビューを増分更新する方法の詳細については、「具体化されたビューの 増分更新のサポート」を参照してください。
- より詳細なデバッグ用のイベント ログ。 具体化されたビューが更新できなかった場合、または他の問題が発生した場合は、 問題パネル をクリックしてログをさらに詳しく表示します。
マテリアライズドビューのトラブルシューティングをするには:
- ワークスペースで、[ワークフロー] アイコンをクリック
左側のナビゲーション バーの [ジョブとパイプライン] ボタン。
- 一覧でパイプラインの名前をクリックします。
- 更新プログラムの実行に失敗した場合、下部のパネルにエラー (またはエラーの一覧) が表示されます。
- ボタンをクリックして ログを表示 するか、 問題パネル をクリックしてエラーを詳細に表示します。
- これにより、イベント ログ UI が開きます。 各エラーには、大まかなメッセージと概要と、詳細を含む JSON タブがあります。 Databricks Assistant の問題を解決するには、エラーを診断する をクリックします。
パイプラインの監視ページの詳細については、こちらを参照 してください。
具体化されたビューの更新履歴を照会する
イベント ログは、ワークスペース全体の更新状態または期間を監視するダッシュボードを設定したり、UI を使用するよりもプログラムによる監視を行う場合に役立ちます。 Databricks SQL で作成された具体化されたビューでは、イベント ログをメタストアに保存することはサポートされていないため、具体化されたビューの所有者のみがイベント ログに直接クエリを実行できます。
現在の更新や過去の更新など、具体化されたビューに対する REFRESH 操作の状態を表示するには、パイプライン イベント ログに対してクエリを実行します。
SELECT *
FROM event_log(TABLE(<fully-qualified-table-name>))
WHERE event_type = "update_progress"
ORDER BY timestamp desc;
<fully-qualified-table-name> を、カタログやスキーマなど、具体化されたビューの完全修飾名に置き換えます。 パイプラインの所有者でない場合は、イベント ログのクエリを実行するために、最初にビューを作成する必要がある場合があります。
プログラムによるイベント ログのクエリを参照してください。
具体化されたビューに対して発生した更新の種類を照会する
一部のクエリは増分更新できます。 増分更新を実行できない場合は、代わりに完全更新が実行されます。
具体化されたビューの更新の種類を確認するには、イベント ログに対してクエリを実行します。
SELECT timestamp, message
FROM event_log(TABLE(my_catalog.my_schema.sales))
WHERE event_type = 'planning_information'
ORDER BY timestamp desc;
このコマンドの出力例:
-
- timestamp
- メッセージ
-
2025-03-21T22:23:16.497+00:00Flow 'sales' has been planned in :re[LDP] to be executed as ROW_BASED.
カスタム タグを使用して SQL ウェアハウスのコストを属性化する
タグは課金レコードに自動的に追加されませんが、クエリの課金情報に手動で結合できます。
カタログ エクスプローラーを使用して各具体化されたビュー (またはストリーミング テーブル) にタグを追加したら、 table_tags と billing システム テーブルを結合することで、具体化されたビューのコストを監視できます。 これは、Databricks SQL で作成されたすべての具体化されたビューとストリーミング テーブルの課金レコードを取得し、テーブル レベルのタグを追加するためのサンプル クエリです。
SELECT
u.*,
tag_info.tags
FROM
system.billing.usage u
LEFT JOIN (
SELECT
t.catalog_name,
t.schema_name,
t.table_name,
collect_list(named_struct('tag_name', t.tag_name, 'tag_value', t.tag_value)) AS tags
FROM
main.information_schema.table_tags t
GROUP BY
t.catalog_name,
t.schema_name,
t.table_name
) tag_info
ON tag_info.catalog_name = u.usage_metadata.uc_table_catalog
AND tag_info.schema_name = u.usage_metadata.uc_table_schema
AND tag_info.table_name = u.usage_metadata.uc_table_name
WHERE usage_metadata.uc_table_name is not null;
この同じアイデアを使用して、代わりに column_tags テーブルの列タグを結合できます。