システムテーブルによる使用状況の監視

この記事では、Databricksのシステムテーブルの概念を説明し、システムテーブルデータを最大限に活用するために使用できるリソースを紹介します。

システムテーブルとは

システムテーブルは、systemカタログにある、Databricksがホストするアカウントの運用データの分析ストアです。システムテーブルは、アカウント全体の履歴の確認に使用できます。

注:

system.information_schemaのドキュメントについては、情報スキーマを参照してください。

要件

  • システムテーブルはAWS GovCloudリージョンでは使用できません。

利用可能なシステムテーブル

現在、Databricksは次のシステムテーブルをホストしています。

テーブル

説明

場所

ストリーミングをサポート

無料保存期間

グローバルまたは地域データを含む

監査ログ (パブリック プレビュー)

リージョン内のワークスペースから取得したすべての監査イベントの記録が含まれます。取得可能な監査イベントの一覧については、「監査ログのリファレンス」を参照してください。

system.access.audit

はい

365日

ワークスペースレベルのイベントの場合はリージョン。アカウントレベルのイベントの場合はグローバル。

Table リネージ (パブリック プレビュー)

Unity Catalogテーブルまたはパス上の各読み取りまたは書き込みイベントのレコードが含まれます。

system.access.table_lineage

はい

365日

リージョン

Column リネージ (Public Preview)

Unity Catalogの各読み取りまたは書き込みイベントのレコードが含まれます(ただし、ソースのないイベントは含まれません)。

system.access.column_lineage

はい

365日

リージョン

請求対象となる使用量

アカウント全体のすべての請求対象使用量のレコードが含まれます。各使用量レコードは、リソースの請求対象使用量を1時間ごとに集計したものです。

system.billing.usage

はい

365日

グローバル

価格プラン

SKU価格の履歴ログ。SKU価格が変更されるたびにレコードが追加されます。

system.billing.list_prices

いいえ

無制限

グローバル

クラスター (パブリック プレビュー)

任意のクラスターの時間の経過に伴うコンピュート構成の全履歴を含む、ゆっくりと変化するディメンションテーブル。

system.compute.clusters

はい

N/A

リージョン

Node タイムライン (パブリック プレビュー)

汎用コンピュートリソースおよびジョブコンピュートリソースの使用状況メトリクスを取得します。

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日

リージョン

Marketplace ファネル イベント (パブリック プレビュー)

リスティング用の消費者インプレッションとファネルデータが含まれます。

system.marketplace.listing_

funnel_events

はい

365日

リージョン

Marketplace 登録情報へのアクセス (パブリック プレビュー)

リスティング上の完了済みリクエストデータデータ取得イベントの消費者情報が含まれます。

system.marketplace.listing_

access_events

はい

365日

リージョン

予測的最適化 (Public Preview)

予測的最適化機能の操作履歴を追跡します。

system.storage.predictive_

optimization_operations_history

いいえ

180日

リージョン

Databricks Assistant イベント (パブリック プレビュー)

Databricks Assistantに送信されたユーザーメッセージを追跡します。

system.access.assistant_events

いいえ

365日

リージョン

クエリ履歴 (パブリック プレビュー)

SQLウェアハウスで実行されるすべてのクエリーのレコードをキャプチャします。

system.query.history

はい

90日

リージョン

クリーンルームイベント (パブリックプレビュー)

クリーンルームに関連するイベントをキャプチャします。

system.access.clean_room_events

はい

365日

リージョン

モデルサービング endpoint usage (Public Preview)

モデルサービング エンドポイントへの各要求とその応答のトークン数をキャプチャします。

system.serving.endpoint_usage

はい

90日

リージョン

モデルサービング endpoint data (Public Preview)

モデルサービングエンドポイントに提供される各外部モデルのメタデータを格納する、ゆっくりと変化するディメンションテーブル。

system.serving.served_entities

はい

365日

リージョン

課金利用テーブルと価格テーブルは無料でご利用いただけます。 パブリック プレビューのテーブルもプレビュー中は無料で使用できますが、将来的には料金が発生する可能性があります。

注:

アカウントには、上記のもの以外にも、他のシステムテーブルが表示される場合があります。これらのテーブルは現在プライベートプレビュー段階であり、デフォルトでは空になっています。これらのテーブルの使用にご興味がある場合は、Databricksアカウントチームに連絡してください。

システムテーブルスキーマを有効にする

システムテーブルはUnity Catalogによって管理されるため、システムテーブルを有効にしてアクセスするには、アカウントに少なくとも1つのUnity Catalog対応ワークスペースが必要です。システムテーブルには、アカウント内のすべてのワークスペースのデータが含まれますが、Unity Catalog対応のワークスペースからしかアクセスできません。

システムテーブルはスキーマレベルで有効になります。システムスキーマを有効にすると、そのスキーマ内のすべてのテーブルが有効になります。新しいスキーマがリリースされた場合、アカウント管理者は手動でスキーマを有効にする必要があります。

システムテーブルは、アカウント管理者がSystemSchemas APIを使用して有効にする必要があります。

注:

billingスキーマはデフォルトで有効になっています。その他のスキーマは手動で有効にする必要があります。

使用可能なシステムスキーマの一覧表示

利用可能なシステムスキーマを一覧表示するには、以下のcurlコマンドを使用します。

curl -v -X GET -H "Authorization: Bearer <PAT Token>" "https://<workspace>.cloud.databricks.com/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: システムスキーマが有効になっており、カタログエクスプローラーに表示されます。

システムスキーマを有効にする

システムスキーマを有効にするには、以下のcurlコマンドを使用します。

curl -v -X PUT -H "Authorization: Bearer <PAT Token>" "https://<workspace>.databricks.com/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://<workspace>.databricks.com/api/2.0/unity-catalog/metastores/<metastore-id>/systemschemas/<SCHEMA_NAME>"

システムテーブルへのアクセス権を付与する

システムテーブルへのアクセスは、 Unity Catalogによって管理されます。 デフォルトでは、これらのシステムスキーマにアクセスできるユーザーはいません。 アクセス権を付与するには、メタストア管理者とアカウント管理者の両方であるユーザーが、システム スキーマに対する USE 権限と SELECT 権限を付与する必要があります。 「Unity Catalog での特権の管理」を参照してください。

システムテーブルは読み取り専用で、変更できません。

注:

2023年11月8日以降に作成されたアカウントの場合、デフォルトではメタストアの管理者がいない可能性があります。詳細については、「Unity Catalogの設定と管理」を参照してください。

システムテーブルには、アカウントのすべてのワークスペースのデータが含まれていますか?

システムテーブルには、同じクラウドリージョン内にデプロイされたアカウント内のすべてのワークスペースの運用データが含まれています。 請求システムテーブルには、アカウント全体のデータが含まれています。

システムテーブルには Unity Catalog ワークスペースからのみアクセスできますが、テーブルにはアカウント内の非Unity Catalog ワークスペースの運用データも含まれています。

システムテーブルのデータはどこに保存されますか?

アカウントのシステムテーブルデータは、メタストアと同じリージョンにある Databricksホスト型ストレージアカウントに保存されます。 データは、Delta Sharing を使用して安全に共有されます。

各テーブルには、無料のデータ保持期間があります。 保持期間の延長に関する情報については、 Databricks アカウントチームにお問い合わせください。

カタログエクスプローラーのシステムテーブルはどこにありますか?

アカウント内のシステムテーブルは、すべてのUnity Catalogメタストアにあるsystemというカタログにあります。systemカタログには、システムテーブルがあるaccessbillingなどのスキーマが表示されます。

ストリーミングシステムテーブルに関する注意事項

DatabricksはDelta Sharingを使用してシステムテーブルデータを顧客と共有します。Delta Sharingを使用してストリーミングする場合は、次の点に注意してください。

  • システムテーブルでストリーミングを使用している場合は、skipChangeCommitsオプションをtrueに設定します。これにより、システムテーブル内の削除によってストリーミングジョブが中断されないようにします。詳しくは、「更新と削除を無視する」を参照してください。

  • Trigger.AvailableNow は、Delta Sharingストリーミングではサポートされません。これはTrigger.Onceに変換されます。

ストリーミングジョブでトリガーを使用していて、そのジョブが最新のシステムテーブルバージョンに対応していないことがわかった場合は、スケジュール設定しているそのジョブの頻度を増やすことを推奨します。

ストリーミングシステムテーブルから増分変化を読み取る

spark.readStream.option("skipChangeCommits", "true").table("system.billing.usage")

既知の問題

  • 現在、リアルタイムモニタリングはサポートされていません。データは終日にわたって更新されます。最近のイベントのログが表示されない場合は、後でもう一度確認してください。

  • ワークスペースで顧客管理VPCを使用している場合、ログが保存されているS3バケットへのアクセスが拒否される可能性があります。その場合は、ご利用のリージョンのシステムテーブルデータが保存されているS3へのアクセスを許可するように、VPCエンドポイントのポリシーを更新する必要があります。リージョンバケットは、ストレージバケットアドレステーブルシステムテーブルバケット列にリスト化されています。

  • システムスキーマsystem.operational_dataおよびsystem.lineageは非推奨であり、内容は空のテーブルになります。

  • __internal_logging システムテーブルスキーマは、推論テーブルを使用したペイロードロギングをサポートするために使用されます。このスキーマはアカウント管理者に表示されますが、有効にすることはできず、顧客のワークフローには使用しないでください。