システム テーブルを使用して使用状況を監視する
この記事では、Azure Databricks のシステム テーブルの概念について説明し、システム テーブルのデータを最大限に活用するために使用できるリソースについて説明します。
システム テーブルとは?
システム テーブルは、system
カタログで見つかるアカウントの運用データの、Azure Databricks がホストする分析ストアです。 システム テーブルは、アカウント全体の履歴監視に使用できます。
Note
system.information_schema
のドキュメントについては、「情報スキーマ」をご覧ください。
要件
システム テーブルにアクセスするには、ワークスペースは、Unity Catalog に対して有効にする必要があります。 詳細については、「システム テーブル スキーマを有効にする」を参照してください。
システム テーブルは、以下のリージョンでは利用できません。
- Azure 中国の地域
- Azure Government リージョン
- インド西部
- スイス西部
使用できるシステム テーブルはどれですか?
現在、Azure Databricks は次のシステム テーブルをホストしています。
テーブル | 説明 | 場所 | ストリーミングをサポート | 無料保持期間 | グローバル データまたはリージョン データを含める |
---|---|---|---|---|---|
監査ログ (パブリック プレビュー) | リージョン内のワークスペースからのすべての監査イベントのレコードが含まれます。 利用可能な監査イベントの一覧については、「診断ログ リファレンス」を参照してください。 | system.access.audit |
はい | 365 日 | ワークスペースレベルのイベントのリージョン。 アカウントレベルのイベントのグローバル。 |
テーブル系列 (パブリック プレビュー) | Unity Catalog テーブルまたはパスの読み取り/書き込みイベントごとに 1 つのレコードが含まれています。 | system.access.table_lineage |
はい | 365 日 | 地域 |
列の系列 (パブリック プレビュー) | Unity Catalog 列の読み取りまたは書き込みイベントごとにレコードが含まれています (ただし、ソースを含まないイベントは含まれません)。 | system.access.column_lineage |
はい | 365 日 | 地域 |
課金対象使用状況 | アカウント全体が課金対象のすべての使用状況のレコードが含まれています。 各使用状況レコードは、リソースの課金対象の使用量を 1 時間ごとに集計したものです。 | system.billing.usage |
はい | 365 日 | グローバル |
料金 | SKU 価格の履歴ログ。 レコードは、SKU 価格が変更されるたびに追加されます。 | system.billing.list_prices |
いいえ | 無制限 | グローバル |
クラスター (パブリック プレビュー) | 任意のクラスターの時間の経過に伴うコンピューティング構成の全履歴を含む、ゆっくりと変化するディメンジョン テーブル。 | system.compute.clusters |
はい | 該当なし | 地域 |
ノードのタイムライン (パブリック プレビュー) | 汎用コンピューティング リソースとジョブ コンピューティング リソースの使用率メトリックをキャプチャします。 | system.compute.node_timeline |
はい | 30 日 | 地域 |
ノードの種類 (パブリック プレビュー) | 現在使用可能なノードの種類と基本的なハードウェア情報を取得します。 | system.compute.node_types |
いいえ | N/A | 地域 |
SQL ウェアハウス イベント (パブリック プレビュー) | SQL ウェアハウスに関連するイベントをキャプチャします。 たとえば、開始、停止、実行、スケールアップ、スケールダウンです。 | system.compute.warehouse_events |
はい | 365 日 | 地域 |
ジョブ (パブリック プレビュー) | アカウントで作成されたすべてのジョブを追跡します。 | system.lakeflow.jobs |
はい | 365 日 | 地域 |
ジョブ タスク (パブリック プレビュー) | アカウントで実行されるすべてのジョブ タスクを追跡します。 | system.lakeflow.job_tasks |
はい | 365 日 | 地域 |
ジョブ実行タイムライン (パブリック プレビュー) | ジョブ実行の開始時刻と終了時刻を追跡します。 | system.lakeflow. job_run_timeline |
はい | 365 日 | 地域 |
ジョブ タスクのタイムライン (パブリック プレビュー) | ジョブ タスクの実行の開始時刻と終了時刻、およびその実行に使用されるコンピューティング リソースを追跡します。 | system.lakeflow. job_task_run_timeline |
はい | 365 日 | 地域 |
マーケットプレース ファネル イベント (パブリック プレビュー) | 登録情報のコンシューマーの印象とファネルデータが含まれます。 | system.marketplace.listing_ funnel_events |
はい | 365 日 | 地域 |
マーケットプレース登録情報へのアクセス (パブリック プレビュー) | リスティング上の完了したデータ要求またはデータ取得イベントのコンシューマー情報が含まれています。 | system.marketplace.listing_ access_events |
はい | 365 日 | 地域 |
予測最適化 (パブリック プレビュー) | 予測最適化機能の操作履歴を追跡します。 | system.storage.predictive_ optimization_operations_history |
いいえ | 180 日 | 地域 |
Databricks アシスタント イベント (パブリック プレビュー) | Databricks アシスタントに送信されたユーザー メッセージを追跡します。 | system.access.assistant_events |
いいえ | 365 日 | 地域 |
Query History (パブリック プレビュー) | SQL ウェアハウスで実行されるすべてのクエリのレコードをキャプチャします。 | system.query.history |
はい | 90 日間 | 地域 |
クリーン ルーム イベント (パブリック プレビュー) | クリーン ルームに関連するイベントをキャプチャします。 | system.access.clean_room_events |
はい | 365 日 | 地域 |
エンドポイントの使用を提供するモデル (パブリック プレビュー) | エンドポイントとその応答を提供するモデルに対する各要求のトークン数をキャプチャします。 | system.serving.endpoint_usage |
はい | 90 日間 | 地域 |
エンドポイント データを提供するモデル (パブリック プレビュー) | モデルサービングエンドポイントにおいて、提供される各外部モデルのメタデータを格納する緩やかに変化するディメンションテーブル。 | system.serving.served_entities |
はい | 365 日 | 地域 |
請求対象の使用量と価格テーブルは無料で使用できます。 パブリック プレビューのテーブルもプレビュー期間中は無料で使用できますが、今後料金が発生する可能性があります。
Note
上記のシステム テーブル以外にも他のシステム テーブルも自分のアカウントで閲覧できます。 これらのテーブルは現在プライベート プレビューの段階にあり、既定で空になっています。 これらのテーブルのいずれかを使用する場合、Databricks アカウント チームにお問い合わせください。
システム テーブル スキーマを有効にする
システム テーブルは Unity Catalog によって管理されるため、システム テーブルを有効化してアクセスするには、Unity Catalog が管理するワークスペースがアカウントに少なくとも 1 つ必要です。 システム テーブルには、アカウント内のすべてのワークスペースのデータが含まれますが、アクセスできるのは Unity Catalog 対応ワークスペースのみです。
システム テーブルはスキーマ レベルで有効になります。 システム スキーマを有効にすると、そのスキーマ内のすべてのテーブルが有効になります。 新しいスキーマがリリースされると、アカウント管理者は手動でそのスキーマを有効にする必要があります。
システム テーブルは、アカウント管理者が有効にする必要があります。SystemSchemas APIを使用して、システム テーブルを有効にすることができます。
Note
billing
スキーマは既定で有効になっています。 他のスキーマは手動で有効にする必要があります。
使用可能なシステム スキーマを一覧表示する
使用可能なシステム スキーマを一覧表示するには、次の curl コマンドを使用します。
curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas"
以下に、GET
コマンドの出力例を示します。
{"schemas":[{"schema":"access","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"billing","state":"<AVAILABLE OR EnableCompleted>"},{"schema":"information_schema","state":"<AVAILABLE OR EnableCompleted>"}]}
state: AVAILABLE
: システム スキーマは使用できますが、まだ有効化されていません。
state: EnableCompleted
: システム スキーマは有効化され、Catalog Explorer に表示されます。
システム スキーマを有効化する
システム スキーマを有効化するには、次の curl コマンドを使用します。
curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
システム スキーマが正常に有効化されている場合は、結果コード 200
が返されます。
システム スキーマを再度有効化しようとすると、"error_code":"SCHEMA_ALREADY_EXISTS","message":"Schema <schema-name> already exists"
が返されます。
システム スキーマを無効化する
システム スキーマを無効化するには、次の curl コマンドを使用します。
curl -v -X DELETE -H "Authorization: Bearer <PAT Token>" "https://adb-<xxx>.azuredatabricks.net/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"
システム テーブルへのアクセスを許可する
システム テーブルのアクセスは、Unity Catalog で管理されます。 既定では、どのユーザーもこれらのシステムスキーマにアクセスできません。 アクセスを許可するには、メタストア管理者でありアカウント管理者でもあるユーザが、システムスキーマのUSE
とSELECT
に権限を与える必要があります。 「Unity Catalog の特権の管理」を参照してください。
システム テーブルは読み取り専用で、変更はできません。
Note
アカウントが 2023 年 11 月 9 日以降に作成された場合、既定ではメタストア管理者がいない可能性があります。 詳細については、「Unity Catalog の設定と管理」を参照してください。
システム テーブルには、アカウント内のすべてのワークスペースのデータが含まれていますか?
システム テーブルには、同じクラウド リージョン内にデプロイされたアカウント内のすべてのワークスペースの運用データが含まれます。 課金システム テーブルには、アカウント全体のデータが含まれています。
システム テーブルには Unity Catalog ワークスペース経由でのみアクセスできますが、テーブルには、アカウント内の Unity Catalog 以外のワークスペースの操作データも含まれます。
システムテーブルのデータはどこに保存されますか?
アカウントのシステム テーブル データは、メタストアと同じリージョンにある Azure Databricks でホストされるストレージ アカウントに格納されます。 データは Delta Sharing を使用して安全に共有されます。
各テーブルには、無料のデータ保持期間があります。 保持期間の延長については、Azure Databricks アカウント チームにお問い合わせください。
システム テーブルはカタログ エクスプローラーのどこにありますか?
アカウント内のシステム テーブルは、system
と呼ばれるカタログにあります。これはすべての Unity Catalog メタストアに含まれています。 system
カタログには、システム テーブルを含む access
や billing
などのスキーマが表示されます。
システム テーブルのストリーミングに関する考慮事項
Azure Databricks は、Delta Sharing を使用してシステム テーブル データを顧客と共有します。 Delta Sharing を使用してストリーミングするときは、次の考慮事項に注意してください。
- システム テーブルでストリーミングを使っている場合は、
skipChangeCommits
オプションをtrue
に設定します。 このようにすると、ストリーミング ジョブがシステム テーブル内の削除によって中断されることがなくなります。 「更新と削除を無視する」を参照してください。 - Delta Sharing ストリーミングでは、
Trigger.AvailableNow
はサポートされません。 これは、Trigger.Once
に変換されます。
ストリーミング ジョブでトリガーを使用し、ジョブが最新のシステム テーブル バージョンに追従していないことがわかった場合、Databricks ではジョブのスケジュール頻度を増やすことをお勧めします。
ストリーミング システム テーブルから増分変更を読み取る
spark.readStream.option("skipChangeCommits", "true").table("system.billing.usage")
既知の問題
現在、リアルタイム監視はサポートされていません。 データは 1 日を通して更新されます。 最近のイベントのログが表示されない場合は、後でチェックしてください。
システム テーブルを有効にするには、システム テーブル BLOB ストレージ エンドポイントへのネットワーク アクセスを許可することが必要な場合があります。 すべてのリージョンのシステム テーブルのストレージ エンドポイント一覧を表示する方法は、「ストレージ エンドポイントの IP アドレス」をご覧ください。
システム スキーマ
system.operational_data
とsystem.lineage
は非推奨であり、空のテーブルが含められます。__internal_logging
システム テーブル スキーマは、推論テーブルを使用したペイロードのログ記録をサポートするために使用します。 このスキーマはアカウント管理者に表示されますが、有効にすることはできません。顧客のワークフローには使用しないでください。