システムテーブルでアカウントアクティビティを監視する

この記事では、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.warehouses

はい

365日

リージョン

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