System Tablesは、Databricksワークスペースの監査ログ・課金データ・コンピュートリソース・テーブルリネージ等の運用メタデータをSQLで直接クエリできる仕組みです。Unity Catalogのsystemカタログ配下にDelta Table形式で格納されており、BI・セキュリティ監査・コスト最適化の基盤として活用できます。Data Engineer Professional試験ではSystem Tablesの種類・用途・有効化方法が出題されます。
System TablesはDatabricksプラットフォームが自動的に生成・更新するメタデータテーブルです。ユーザーが明示的にデータを書き込む必要はなく、ワークスペース上の操作(ジョブ実行・テーブルアクセス・クラスタ作成等)がリアルタイムに記録されます。すべてのテーブルはsystemカタログの各スキーマに格納されます。
| テーブル名 | スキーマ | 内容 | 保持期間 |
|---|---|---|---|
system.access.audit | access | 全APIコール・UIアクションの監査ログ | 365日 |
system.billing.usage | billing | DBU消費量・SKU別課金データ | 365日 |
system.billing.list_prices | billing | 各SKUの単価リスト(価格変更履歴含む) | 全期間 |
system.compute.clusters | compute | クラスタの作成・設定・ステータス変更 | 365日 |
system.compute.node_types | compute | 利用可能なインスタンスタイプ一覧 | 最新のみ |
system.lakeflow.job_run_timeline | lakeflow | ジョブ実行のタイムライン・タスク実行結果 | 365日 |
system.lakeflow.job_task_run_timeline | lakeflow | タスクレベルの実行タイムライン | 365日 |
system.information_schema.tables | information_schema | Unity Catalog登録テーブルのメタデータ | 最新のみ |
system.information_schema.columns | information_schema | Unity Catalog登録テーブルのカラム定義 | 最新のみ |
system.storage.predictive_optimization_operations_history | storage | Predictive Optimization(自動OPTIMIZE/VACUUM)の実行履歴 | 90日 |
System Tablesはデフォルトでは一部のスキーマのみ有効です。すべてのスキーマを有効化するにはアカウント管理者が以下のコマンドを実行します。
-- 全スキーマを有効化(アカウント管理者権限が必要)
ALTER CATALOG system ENABLE ALL SCHEMAS
-- 特定スキーマのみ有効化
ALTER CATALOG system ENABLE SCHEMA billing
ALTER CATALOG system ENABLE SCHEMA access
-- アクセス権の付与(データエンジニアグループに監査ログの読み取り権限)
GRANT SELECT ON SCHEMA system.access TO `data-engineers`
GRANT SELECT ON TABLE system.billing.usage TO `finance-team`system.access.auditテーブルには、ワークスペース上の全APIリクエストと操作が記録されます。セキュリティ監査やコンプライアンス対応に使用します。
-- 過去7日間のテーブルアクセスログ(誰がどのテーブルを参照したか)
SELECT
event_date,
user_identity.email AS user_email,
action_name,
request_params.full_name_arg AS table_name,
source_ip_address,
response.status_code
FROM system.access.audit
WHERE action_name IN ('getTable', 'commandSubmit')
AND event_date >= CURRENT_DATE - INTERVAL 7 DAYS
AND request_params.full_name_arg IS NOT NULL
ORDER BY event_date DESC
-- 特定ユーザーの操作履歴(インシデント調査用)
SELECT
event_date,
event_time,
action_name,
request_params,
response.status_code,
source_ip_address
FROM system.access.audit
WHERE user_identity.email = '[email protected]'
AND event_date >= '2026-03-01'
ORDER BY event_time DESCsystem.billing.usageとsystem.billing.list_pricesを結合して、実際のコストをドル換算で分析できます。
-- 過去30日のSKU別DBU消費量と推定コスト
SELECT
u.sku_name,
u.usage_unit,
SUM(u.usage_quantity) AS total_dbu,
ROUND(SUM(u.usage_quantity * p.pricing.default), 2) AS estimated_cost_usd
FROM system.billing.usage u
LEFT JOIN system.billing.list_prices p
ON u.sku_name = p.sku_name
AND u.usage_date BETWEEN p.price_start_time AND COALESCE(p.price_end_time, '2099-12-31')
WHERE u.usage_date >= CURRENT_DATE - INTERVAL 30 DAYS
GROUP BY u.sku_name, u.usage_unit
ORDER BY estimated_cost_usd DESC
-- ワークスペース別の日次コスト推移
SELECT
u.usage_date,
u.workspace_id,
ROUND(SUM(u.usage_quantity * p.pricing.default), 2) AS daily_cost_usd
FROM system.billing.usage u
LEFT JOIN system.billing.list_prices p
ON u.sku_name = p.sku_name
AND u.usage_date BETWEEN p.price_start_time AND COALESCE(p.price_end_time, '2099-12-31')
WHERE u.usage_date >= CURRENT_DATE - INTERVAL 90 DAYS
GROUP BY u.usage_date, u.workspace_id
ORDER BY u.usage_date DESCsystem.compute.clustersテーブルでクラスタの構成・稼働時間・コスト効率を分析できます。
-- アクティブなクラスタとそのスペック一覧
SELECT
cluster_id,
cluster_name,
cluster_source,
driver_node_type,
node_type_id AS worker_node_type,
autoscale.min_workers,
autoscale.max_workers,
spark_version,
creator
FROM system.compute.clusters
WHERE delete_time IS NULL
ORDER BY cluster_name
-- 長時間稼働クラスタの検出(コスト最適化)
SELECT
cluster_id,
cluster_name,
creator,
state,
TIMESTAMPDIFF(HOUR, last_restarted_time, CURRENT_TIMESTAMP) AS hours_since_restart
FROM system.compute.clusters
WHERE state = 'RUNNING'
AND delete_time IS NULL
AND TIMESTAMPDIFF(HOUR, last_restarted_time, CURRENT_TIMESTAMP) > 24
ORDER BY hours_since_restart DESCUnity Catalogが自動追跡するリネージ情報はsystem.access.table_lineageとsystem.access.column_lineageテーブルに記録されます。データの流れを可視化し、影響分析やデータ品質トラッキングに活用できます。
-- 特定テーブルの上流テーブル(データソース)を特定
SELECT
source_table_full_name,
target_table_full_name,
event_date,
entity_type
FROM system.access.table_lineage
WHERE target_table_full_name = 'gold.analytics.daily_revenue'
AND event_date >= CURRENT_DATE - INTERVAL 30 DAYS
GROUP BY source_table_full_name, target_table_full_name,
event_date, entity_type
ORDER BY event_date DESCSystem Tables - 監査ログ
問題 1
セキュリティチームが過去30日間にDatabricksワークスペース上で特定のテーブルにアクセスした全ユーザーを特定する必要があります。最も適切なアプローチはどれですか?
正解: B
system.access.auditテーブルにはワークスペース上の全APIリクエスト(テーブルの読み取り・書き込み含む)が記録されています。event_dateで期間を絞り、request_params.full_name_argでテーブル名をフィルタし、user_identity.emailでアクセスユーザーを特定できます。DESCRIBE HISTORYはテーブル変更(WRITE/MERGE等)のみ記録しSELECTは含みません。information_schemaは所有者情報のみ、billing.usageはテーブル単位のアクセスログを持ちません。
System Tablesを有効化するにはどのような権限が必要ですか?
System TablesはUnity Catalogのsystemカタログ配下に存在し、有効化にはアカウント管理者(Account Admin)権限が必要です。具体的にはALTER CATALOG system ENABLE ALL SCHEMASコマンドを実行するか、アカウントコンソールのSystem Tables設定画面から有効化します。有効化後、各テーブルへのアクセスはUnity CatalogのGRANT文でスキーマ単位またはテーブル単位で制御します。
System Tablesのデータ保持期間はどのくらいですか?
テーブルによって異なります。system.access.audit(監査ログ)は365日間、system.billing.usage(課金データ)は365日間、system.compute.clusters(クラスタ情報)は365日間保持されます。system.billing.list_prices(リスト価格)は過去の価格変更履歴を全期間保持します。保持期間を超えたデータは自動的にパージされるため、長期保存が必要な場合はETLで別テーブルにコピーしてください。
System Tablesのクエリにはコンピュートコストがかかりますか?
はい、System TablesへのSQLクエリは通常のDelta Tableクエリと同様にDBU(Databricks Unit)を消費します。特にsystem.access.auditは大量のレコードを含むため、フィルタなしのSELECT *は高コストになり得ます。WHERE句で日付やaction_name等のフィルタを必ず指定し、必要に応じてマテリアライズドビューやゴールドテーブルに集約データを事前計算しておくことがコスト最適化のベストプラクティスです。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...