スキル一覧に戻る
mats16

databricks-system-tables

by mats16

Claude Code on Databricks

0🍴 0📅 2026年1月23日
GitHubで見るManusで実行

SKILL.md


name: databricks-system-tables description: | Databricks System Tables の分析・クエリ作成支援。Unity Catalog の system カタログに格納された運用データ(課金、監査ログ、ジョブ実行、クエリ履歴、リネージュ、コンピュートなど)を活用した分析・調査を行う際に使用。 トリガー例: コスト分析、DBU使用量、課金レポート、監査ログ調査、ジョブ実行履歴、クエリパフォーマンス、テーブルリネージュ、クラスター利用状況の確認。 metadata: version: 1.0.0

Overview

System Tables は Databricks がホストする運用データの分析ストアで、system カタログ配下に格納される。Delta Sharing で提供され、Unity Catalog ワークスペースからのみアクセス可能。

スキーマ一覧と用途

system.billing(課金)

テーブル用途主要カラム
usageDBU使用量・コスト分析usage_date, sku_name, usage_quantity, usage_metadata.*
list_pricesSKU単価履歴sku_name, pricing.default, price_start_time

usage_metadata の主要フィールド:

  • workspace_id, cluster_id, warehouse_id, job_id, job_run_id, notebook_id

コスト計算の注意:

  • record_typeRETRACTION/RESTATEMENT の場合は補正レコード
  • 正確な合計: SUM(usage_quantity) ... HAVING usage_quantity != 0

system.access(アクセス・監査)

テーブル用途主要カラム
audit監査ログ(ユーザー操作追跡)event_time, action_name, user_identity.email, request_params
table_lineageテーブル読み書きイベントsource_table_full_name, target_table_full_name, entity_type
column_lineageカラムレベルリネージュsource_column_name, target_column_name

audit の主要 action_name:

  • createTable, getTable, deleteTable, commandSubmit, runCommand(verbose有効時)

system.lakeflow(ジョブ・パイプライン)

テーブル用途主要カラム
jobsジョブ定義job_id, name, creator_user_name, settings
job_run_timelineジョブ実行履歴job_id, run_id, period_start_time, period_end_time, result_state
job_task_run_timelineタスク実行詳細job_id, task_key, compute_ids, termination_code
pipelinesDLTパイプライン定義pipeline_id, name, creator_user_name
pipeline_event_logパイプライン更新履歴pipeline_id, update_id, event_type

period_start/end_time について:

  • 1時間を超えるランは複数行に分割される(時間粒度の監視用)

system.query(クエリ履歴)

テーブル用途主要カラム
historySQL Warehouse/Serverless クエリstatement_id, executed_by, statement_text, total_duration_ms, query_source

query_source 構造:

{
  "job_info": {"job_id": ..., "job_run_id": ...},
  "notebook_id": ...,
  "dashboard_id": ...,
  "alert_id": ...
}

system.compute(コンピュート)

テーブル用途主要カラム
clustersクラスター設定履歴(SCD)cluster_id, cluster_name, cluster_source, change_time
node_types利用可能ノードタイプnode_type_id, num_cores, memory_mb, gpu_count
node_timelineノード利用メトリクスcluster_id, node_id, start_time, utilization
warehousesSQL Warehouse設定履歴warehouse_id, name, cluster_size, change_time
warehouse_eventsWarehouse起動/停止イベントwarehouse_id, event_type, event_time

よく使うクエリパターン

日別/月別コスト集計

SELECT
  DATE_TRUNC('month', usage_date) AS month,
  sku_name,
  SUM(usage_quantity) AS total_dbu,
  SUM(usage_quantity * p.pricing.default) AS estimated_cost
FROM system.billing.usage u
LEFT JOIN system.billing.list_prices p USING (sku_name)
WHERE usage_date >= CURRENT_DATE - INTERVAL 30 DAYS
GROUP BY ALL
ORDER BY estimated_cost DESC

ジョブ別コスト(Job Compute)

SELECT
  usage_metadata.job_id,
  j.name AS job_name,
  SUM(usage_quantity) AS total_dbu
FROM system.billing.usage u
LEFT JOIN system.lakeflow.jobs j
  ON u.usage_metadata.job_id = j.job_id
WHERE usage_metadata.job_id IS NOT NULL
  AND usage_date >= CURRENT_DATE - INTERVAL 7 DAYS
GROUP BY ALL
ORDER BY total_dbu DESC

失敗ジョブの調査

SELECT
  j.name,
  r.run_id,
  r.result_state,
  r.period_start_time,
  r.termination_code
FROM system.lakeflow.job_run_timeline r
JOIN system.lakeflow.jobs j USING (job_id)
WHERE r.result_state IN ('FAILED', 'TIMED_OUT', 'CANCELED')
  AND r.period_start_time >= CURRENT_DATE - INTERVAL 1 DAY
ORDER BY r.period_start_time DESC

長時間クエリの特定

SELECT
  executed_by,
  statement_text,
  total_duration_ms / 1000 / 60 AS duration_minutes,
  rows_produced
FROM system.query.history
WHERE total_duration_ms > 300000  -- 5分以上
  AND statement_type = 'SELECT'
ORDER BY total_duration_ms DESC
LIMIT 20

テーブル利用頻度(人気テーブル)

SELECT
  source_table_full_name,
  COUNT(DISTINCT event_id) AS read_count
FROM system.access.table_lineage
WHERE event_date >= CURRENT_DATE - INTERVAL 7 DAYS
  AND source_table_full_name IS NOT NULL
GROUP BY source_table_full_name
ORDER BY read_count DESC
LIMIT 50

ユーザー操作の監査

SELECT
  event_time,
  user_identity.email,
  action_name,
  request_params.full_name_arg AS table_name
FROM system.access.audit
WHERE action_name IN ('createTable', 'deleteTable', 'updatePermissions')
  AND event_date >= CURRENT_DATE - INTERVAL 7 DAYS
ORDER BY event_time DESC

テーブル間 JOIN のキー

billing.usage.usage_metadata.job_id      ↔ lakeflow.jobs.job_id
billing.usage.usage_metadata.cluster_id  ↔ compute.clusters.cluster_id
billing.usage.usage_metadata.warehouse_id ↔ compute.warehouses.warehouse_id
lakeflow.job_run_timeline.job_id         ↔ lakeflow.jobs.job_id
query.history.statement_id               ↔ access.table_lineage.statement_id
access.table_lineage.entity_id           ↔ lakeflow.jobs.job_id (entity_type='JOB'時)

制限事項・注意点

  1. リアルタイム性なし: データは1日を通して更新される。直近のイベントは遅延あり
  2. スキーマ変更: 新カラムが随時追加される。SELECT * は避ける
  3. リージョン制約: ほとんどのテーブルはリージョナル(同一リージョンのワークスペースのみ)
  4. Streaming時: skipChangeCommits=true オプション必須
  5. Interactive Cluster コスト按分: 複数ワークロード共有時は正確な按分不可

権限

System Tables へのアクセスには以下が必要:

  • Account Admin かつ Metastore Admin による USE + SELECT 権限付与
  • GRANT USE CATALOG ON CATALOG system TO <principal>
  • GRANT SELECT ON SCHEMA system.<schema> TO <principal>

スキーマ情報の動的取得

実際のカラム定義は Unity Catalog API または SQL で取得:

DESCRIBE EXTENDED system.billing.usage
# REST API
GET /api/2.1/unity-catalog/tables/system.billing.usage

スコア

総合スコア

65/100

リポジトリの品質指標に基づく評価

SKILL.md

SKILL.mdファイルが含まれている

+20
LICENSE

ライセンスが設定されている

+10
説明文

100文字以上の説明がある

0/10
人気

GitHub Stars 100以上

0/15
最近の活動

1ヶ月以内に更新

+10
フォーク

10回以上フォークされている

0/5
Issue管理

オープンIssueが50未満

+5
言語

プログラミング言語が設定されている

+5
タグ

1つ以上のタグが設定されている

+5

レビュー

💬

レビュー機能は近日公開予定です