システムテーブルによる使用状況の監視
この記事では、Databricksのシステムテーブルの概念を説明し、システムテーブルデータを最大限に活用するために使用できるリソースを紹介します。
システムテーブルとは
システムテーブルは、system
カタログにある、Databricksがホストするアカウントの運用データの分析ストアです。システムテーブルは、アカウント全体の履歴の確認に使用できます。
注:
system.information_schema
のドキュメントについては、情報スキーマを参照してください。
要件
システムテーブルにアクセスするには、ワークスペースでUnity Catalogが有効になっている必要があります。詳細については、「システムテーブルスキーマを有効にする」を参照してください。
利用可能なシステムテーブル
現在、Databricksは次のシステムテーブルをホストしています。
テーブル |
説明 |
場所 |
ストリーミングをサポート |
無料保存期間 |
グローバルまたは地域データを含む |
---|---|---|---|---|---|
監査ログ (パブリック プレビュー) |
Databricksアカウント全体のすべての監査イベントのレコードが含まれます。取得可能な監査イベントの一覧については、「監査ログのリファレンス」を参照してください。 |
|
はい |
365日 |
ワークスペースレベルのイベントの場合はリージョン。アカウントレベルのイベントの場合はグローバル。 |
Table リネージ (パブリック プレビュー) |
Unity Catalogテーブルまたはパス上の各読み取りまたは書き込みイベントのレコードが含まれます。 |
|
はい |
365日 |
リージョン |
Column リネージ (Public Preview) |
Unity Catalogの各読み取りまたは書き込みイベントのレコードが含まれます(ただし、ソースのないイベントは含まれません)。 |
|
はい |
365日 |
リージョン |
アカウント全体のすべての請求対象使用量のレコードが含まれます。各使用量レコードは、リソースの請求対象使用量を1時間ごとに集計したものです。 |
|
はい |
365日 |
グローバル |
|
SKU価格の履歴ログ。SKU価格が変更されるたびにレコードが追加されます。 |
|
いいえ |
N/A |
グローバル |
|
クラスター (パブリック プレビュー) |
任意のクラスターのコンピュート構成の経時的な完全な履歴を含む、ゆっくりと変化するディメンション テーブル。 |
|
はい |
しない |
リージョン |
Node タイムライン (パブリック プレビュー) |
汎用コンピュートリソースおよびジョブコンピュートリソースの使用状況メトリクスを取得します。 |
|
はい |
30日 |
リージョン |
ノードの種類 (パブリック プレビュー) |
現在使用可能なノード タイプを、その基本的なハードウェア情報と共にキャプチャします。 |
|
いいえ |
N/A |
リージョン |
アカウントで作成されたすべてのジョブを追跡します。 |
|
はい |
365日 |
リージョン |
|
ジョブ タスク (パブリック プレビュー) |
アカウントで実行されるすべてのジョブタスクを追跡します。 |
|
はい |
365日 |
リージョン |
ジョブ実行タイムライン (パブリック プレビュー) |
ジョブ実行の開始時刻と終了時刻を追跡します。 |
|
はい |
365日 |
リージョン |
ジョブ タスク タイムライン (パブリック プレビュー) |
ジョブ実行タスクに使用される開始時刻と終了時刻、およびコンピュートリソースを追跡します。 |
|
はい |
365日 |
リージョン |
Marketplace ファネル イベント (パブリック プレビュー) |
リスティング用の消費者インプレッションとファネルデータが含まれます。 |
|
はい |
365日 |
リージョン |
Marketplace 登録情報へのアクセス (パブリック プレビュー) |
リスティング上の完了済みリクエストデータやデータ取得イベントの消費者情報が含まれます。 |
|
はい |
365日 |
リージョン |
(パブリック プレビュー)Databricks Assistant に送信されたユーザー メッセージを追跡します。 |
|
いいえ |
365日 |
リージョン |
|
クエリ履歴 (パブリック プレビュー) |
SQLウェアハウスで実行されるすべてのクエリーのレコードをキャプチャします。 |
|
はい |
90日 |
リージョン |
課金利用テーブルと価格テーブルは無料でご利用いただけます。 パブリック プレビューのテーブルもプレビュー中は無料で使用できますが、将来的には料金が発生する可能性があります。
注:
アカウントには、上記のもの以外にも、他のシステムテーブルが表示される場合があります。これらのテーブルは現在プライベートプレビュー段階であり、デフォルトでは空になっています。これらのテーブルの使用にご興味がある場合は、Databricksアカウントチームに連絡してください。
システムテーブルスキーマを有効にする
システムテーブルはUnity Catalogによって管理されるため、システムテーブルを有効にしてアクセスするには、アカウントに少なくとも1つのUnity Catalog対応ワークスペースが必要です。システムテーブルには、アカウント内のすべてのワークスペースのデータが含まれますが、Unity Catalog対応のワークスペースからしかアクセスできません。
システムテーブルはスキーマレベルで有効になります。システムスキーマを有効にすると、そのスキーマ内のすべてのテーブルが有効になります。新しいスキーマがリリースされた場合、アカウント管理者は手動でスキーマを有効にする必要があります。
システムテーブルは、アカウント管理者がSystemSchemas APIを使用して有効にする必要があります。
注:
billing
スキーマはデフォルトで有効になっています。その他のスキーマは手動で有効にする必要があります。
アカウントで利用可能かつ有効になっているスキーマを表示するには、システムスキーマ一覧表示APIを使用します。スキーマの状態は以下のいずれかです。
state: AVAILABLE
: システムスキーマは利用可能ですが、まだ有効化されていません。state: EnableCompleted
: システムスキーマが有効になっており、カタログエクスプローラーに表示されます。
system
カタログにスキーマを追加するには、システムスキーマ有効化APIを使用します。system
カタログからスキーマを削除するには、システムスキーマ無効化APIを使用します。
システムテーブルへのアクセス権を付与する
システムテーブルへのアクセスは、 Unity Catalogによって管理されます。 デフォルトでは、これらのシステムスキーマにアクセスできるユーザーはいません。 アクセス権を付与するには、メタストア管理者とアカウント管理者の両方であるユーザーが、システム スキーマに対する USE
権限と SELECT
権限を付与する必要があります。 「Unity Catalog での特権の管理」を参照してください。
システムテーブルは読み取り専用で、変更できません。
注:
2024年3月6日以降に作成されたアカウントの場合、デフォルトではメタストアの管理者がいない可能性があります。詳細については、「Unity Catalogの設定と管理」を参照してください。
システムテーブルには、アカウントのすべてのワークスペースのデータが含まれていますか?
監査ログとリネージテーブルには、同じクラウドリージョン内に展開されているアカウント内のすべてのワークスペースの運用データが格納されています。請求システムテーブル(system.billing.usage
)には、展開されているリージョンに関係なく、アカウント内のすべてのワークスペースのデータが格納されています。
システムテーブルにはUnity Catalogワークスペースからしかアクセスできませんが、これらのテーブルにはアカウントのUnity Catalog以外のワークスペースの運用データも含まれています。
システムテーブルはどこにありますか?
アカウント内のシステムテーブルは、すべてのUnity Catalogメタストアにあるsystem
というカタログにあります。system
カタログには、システムテーブルがあるaccess
やbilling
などのスキーマが表示されます。
注:
システムテーブルのパブリックプレビュー中、Databricksはすべてのシステムテーブルのデータを保持します。
ストリーミングシステムテーブルに関する注意事項
DatabricksはDelta Sharingを使用してシステムテーブルデータを顧客と共有します。Delta Sharingを使用してストリーミングする場合は、次の点に注意してください。
システムテーブルでストリーミングを使用している場合は、
skipChangeCommits
オプションをtrue
に設定します。これにより、システムテーブル内の削除によってストリーミングジョブが中断されないようにします。詳しくは、「更新と削除を無視する」を参照してください。Trigger.AvailableNow
は、Delta Sharingストリーミングではサポートされません。これはTrigger.Once
に変換されます。
ストリーミングジョブでトリガーを使用していて、そのジョブが最新のシステムテーブルバージョンに対応していないことがわかった場合は、スケジュール設定しているそのジョブの頻度を増やすことを推奨します。