Note
lakeflow スキーマは以前は workflowという名称でした。 両方のスキーマの内容は同じです。
この記事は、アカウントのジョブ アクティビティを記録する lakeflow システム テーブルのリファレンスです。 これらのテーブルには、同じクラウド リージョン内にデプロイされたアカウント内のすべてのワークスペースのレコードが含まれます。 別のリージョンのレコードを表示するには、そのリージョンにデプロイされているワークスペースのテーブルを表示する必要があります。
Requirements
- これらのシステム テーブルにアクセスするには、ユーザーは次のいずれかを行う必要があります。
- メタストア管理者とアカウント管理者の両方であるか、または
- システム スキーマに対する
USE権限とSELECT権限を持つ。 システム テーブルへのアクセス権の付与を参照してください。
利用可能な仕事のテーブル
ジョブ関連のすべてのシステム テーブルは、 system.lakeflow スキーマに格納されます。 現在、このスキーマによって、次の 4 つのテーブルがホストされています。
| Table | Description | ストリーミングをサポート | 無料の保持期間 | グローバルデータまたは地域データを含む |
|---|---|---|---|---|
| jobs (パブリック プレビュー) | アカウントで作成されたすべてのジョブを追跡します | Yes | 365 日 | Regional |
| job_tasks (パブリック プレビュー) | アカウントで実行されるすべてのジョブ タスクを追跡します | Yes | 365 日 | Regional |
| job_run_timeline (パブリック プレビュー) | ジョブの実行と関連メタデータを追跡します | Yes | 365 日 | Regional |
| job_task_run_timeline (パブリック プレビュー) | ジョブ タスクの実行と関連メタデータを追跡します | Yes | 365 日 | Regional |
| パイプライン (パブリック プレビュー) | アカウントで作成されたすべてのパイプラインを追跡します | Yes | 365 日 | Regional |
| パイプライン更新タイムライン (パブリック プレビュー) | パイプラインの更新と関連メタデータを追跡します | Yes | 365 日 | Regional |
詳細なスキーマ リファレンス
次のセクションでは、ジョブ関連の各システム テーブルのスキーマ参照について説明します。
ジョブテーブルスキーマ
jobs テーブルは、緩やかに変化するディメンション テーブル (SCD2) です。 行が変更されると、新しい行が出力され、前の行が論理的に置き換えられます。
テーブル パス: system.lakeflow.jobs
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このジョブが属するアカウントの ID | |
workspace_id |
文字列 | このジョブが属するワークスペースの ID | |
job_id |
文字列 | ジョブの一意の ID。 | 1つのワークスペース内でのみ一意である |
name |
文字列 | ユーザーが指定したジョブ名 | |
description |
文字列 | ユーザーが指定したジョブの説明 | カスタマー マネージド キーが構成されている場合、このフィールドは空です。 |
creator_id |
文字列 | ジョブを作成したプリンシパルの ID | |
tags |
マップ | このジョブに関連付けられているユーザー指定のカスタム タグ | |
change_time |
timestamp | ジョブを前回変更した時刻です | +00:00 (UTC) として記録されたタイムゾーン |
delete_time |
timestamp | ジョブがユーザーによって削除された時刻 | +00:00 (UTC) として記録されたタイムゾーン |
run_as |
文字列 | パイプラインの更新に使用されるアクセス許可を持つユーザーまたはサービス プリンシパルの ID | |
trigger |
構造体 | ジョブのトリガー設定 | 2025 年 12 月上旬より前に出力された行には設定されません |
trigger_type |
文字列 | ジョブのトリガーの種類 | 2025 年 12 月上旬より前に出力された行には設定されません |
run_as_user_name |
文字列 | ジョブの実行に使用されるアクセス許可を持つユーザーまたはサービス プリンシパルの ID の電子メール | 2025 年 12 月上旬より前に出力された行には設定されません |
creator_user_name |
文字列 | ユーザーの電子メール、またはジョブを作成したサービス プリンシパルの ID | 2025 年 12 月上旬より前に出力された行には設定されません |
paused |
ブーリアン | ジョブが一時停止されているかどうかを示します | 2025 年 12 月上旬より前に出力された行には設定されません |
timeout_seconds |
long | ジョブのタイムアウト時間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
health_rules |
アレイ | このジョブに対して定義されているヘルスルールの一式 | 2025 年 12 月上旬より前に出力された行には設定されません |
deployment |
構造体 | 外部ソースによって管理されるジョブのデプロイ情報 | 2025 年 12 月上旬より前に出力された行には設定されません |
create_time |
timestamp | このジョブが作成された時刻。 タイムゾーンは +00:00 (UTC) として記録されます。 | 2025 年 12 月上旬より前に出力された行には設定されません |
クエリの例
-- Get the most recent version of a job
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
ジョブのタスク テーブル スキーマ
ジョブ タスク テーブルは、緩やかに変化するディメンション テーブル (SCD2) です。 行が変更されると、新しい行が出力され、前の行が論理的に置き換えられます。
テーブル パス: system.lakeflow.job_tasks
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このジョブが属するアカウントの ID | |
workspace_id |
文字列 | このジョブが属するワークスペースの ID | |
job_id |
文字列 | ジョブの一意の ID。 | 1つのワークスペース内でのみ一意である |
task_key |
文字列 | ジョブ内のタスクの参照キー | 1つのジョブ内でのみユニーク |
depends_on_keys |
アレイ | このタスクのすべてのアップストリーム依存関係のタスク キー | |
change_time |
timestamp | タスクが最後に変更された時刻 | +00:00 (UTC) として記録されたタイムゾーン |
delete_time |
timestamp | ユーザーがタスクを削除した時刻 | +00:00 (UTC) として記録されたタイムゾーン |
timeout_seconds |
long | タスクのタイムアウト時間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
health_rules |
アレイ | このジョブ タスクに対して定義された健康状態ルールのセット | 2025 年 12 月上旬より前に出力された行には設定されません |
クエリの例
-- Get the most recent version of a job task
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.job_tasks QUALIFY rn=1
ジョブ実行のタイムライン テーブル スキーマ
ジョブ実行タイムライン テーブルは変更不可であり、作成時に完了します。
テーブル パス: system.lakeflow.job_run_timeline
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このジョブが属するアカウントの ID | |
workspace_id |
文字列 | このジョブが属するワークスペースの ID | |
job_id |
文字列 | ジョブの一意の ID。 | このキーは、1 つのワークスペース内でのみ一意です |
run_id |
文字列 | ジョブ実行の ID。 | |
period_start_time |
timestamp | 実行の開始時刻または期間 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
period_end_time |
timestamp | 実行または期間の終了日時 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
trigger_type |
文字列 | 実行を起動できるトリガーの種類 | 使用可能な値については、「トリガーの種類の値」を参照してください。 |
run_type |
文字列 | ジョブ実行の種類 | 参照可能な値については、「実行タイプの値」をご覧ください。 |
run_name |
文字列 | このジョブ実行に関連付けられているユーザー指定の実行名 | |
compute_ids |
アレイ | 親ジョブ実行のジョブ コンピューティング ID を含む配列 |
WORKFLOW_RUN実行の種類で使用されるジョブ クラスターを識別するために使用します。 その他のコンピューティング情報については、 job_task_run_timeline の表を参照してください。 |
result_state |
文字列 | ジョブ実行の結果 | 複数の行に分割された 1 時間以上の実行の場合、この列は実行の終了を表す行にのみ設定されます。 指定できる値については、「 結果の状態の値」を参照してください。 |
termination_code |
文字列 | ジョブ実行の終了コード | 複数の行に分割された 1 時間以上の実行の場合、この列は実行の終了を表す行にのみ設定されます。 使用可能な値については、「終了コード値」を参照してください。 |
job_parameters |
マップ | ジョブ実行で使用されるジョブ レベルのパラメーター |
job_parametersの値のみを格納します。 非推奨のパラメーター フィールド (notebook_params、 python_params、 python_named_params、 spark_submit_params、および sql_params) は含まれません。 |
source_task_run_id |
文字列 | ソース タスク実行の ID。 この列を使用して、このジョブの実行をトリガーしたタスクの実行を特定します。 | 2025 年 12 月上旬より前に出力された行には設定されません |
root_task_run_id |
文字列 | ルート タスク実行の ID。 この列を使用して、このジョブの実行をトリガーしたタスクの実行を特定します。 | 2025 年 12 月上旬より前に出力された行には設定されません |
compute |
アレイ | ジョブの実行で使用されるコンピューティング リソースの詳細 | 2025 年 12 月上旬より前に出力された行には設定されません |
termination_type |
文字列 | ジョブ実行の終了の種類 | 2025 年 12 月上旬より前に出力された行には設定されません |
setup_duration_seconds |
long | ジョブ実行のセットアップ フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
queue_duration_seconds |
long | ジョブの実行に対してキューに費やされた時間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
run_duration_seconds |
long | ジョブ実行の合計時間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
cleanup_duration_seconds |
long | ジョブ実行のクリーンアップ フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
execution_duration_seconds |
long | ジョブ実行の実行フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
クエリの例
-- This query gets the daily job count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily job count for a workspace for the last 7 days, distributed by the outcome of the job run.
SELECT
workspace_id,
COUNT(DISTINCT run_id) as job_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of job runs, measured in seconds. The records are organized by job. A top 90 and a 95 percentile column show the average lengths of the job's longest runs.
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
COUNT(DISTINCT t1.run_id) as runs,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
job_run_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
-- This query provides a historical runtime for a specific job based on the `run_name` parameter. For the query to work, you must set the `run_name`.
SELECT
workspace_id,
run_id,
SUM(period_end_time - period_start_time) as run_time
FROM system.lakeflow.job_run_timeline
WHERE
run_type="SUBMIT_RUN"
AND run_name = :run_name
AND period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
GROUP BY ALL
-- This query collects a list of retried job runs with the number of retries for each run.
with repaired_runs as (
SELECT
workspace_id, job_id, run_id, COUNT(*) - 1 as retries_count
FROM system.lakeflow.job_run_timeline
WHERE result_state IS NOT NULL
GROUP BY ALL
HAVING retries_count > 0
)
SELECT
*
FROM repaired_runs
ORDER BY retries_count DESC
LIMIT 10;
ジョブ タスク実行のタイムライン テーブル スキーマ
ジョブタスク実行タイムライン テーブルは変更不可であり、作成時に完了します。
テーブル パス: system.lakeflow.job_task_run_timeline
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このジョブが属するアカウントの ID | |
workspace_id |
文字列 | このジョブが属するワークスペースの ID | |
job_id |
文字列 | ジョブの一意の ID。 | 1つのワークスペース内でのみ一意である |
run_id |
文字列 | タスク実行の ID | |
job_run_id |
文字列 | ジョブ実行の ID。 | |
parent_run_id |
文字列 | 親の実行の ID。 | |
period_start_time |
timestamp | タスクまたは期間の開始時刻 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
period_end_time |
timestamp | タスクまたは期間の終了時刻 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
task_key |
文字列 | ジョブ内のタスクの参照キー | このキーは、1 つのジョブ内でのみ一意です |
compute_ids |
アレイ | compute_ids配列には、ジョブ タスクによって使用されるジョブ クラスター、対話型クラスター、および SQL ウェアハウスの ID が含まれています | |
result_state |
文字列 | ジョブタスクの実行結果 | 複数の行に分割された 1 時間以上のタスク実行の場合、この列は実行の終了を表す行にのみ設定されます。 指定できる値については、「 結果の状態の値」を参照してください。 |
termination_code |
文字列 | タスク実行の終了コード | 複数の行に分割された 1 時間以上のタスク実行の場合、この列は実行の終了を表す行にのみ設定されます。 使用可能な値については、「終了コード値」を参照してください。 |
compute |
アレイ | ジョブ タスクの実行で使用されるコンピューティング リソースの詳細 | 2025 年 12 月上旬より前に出力された行には設定されません |
termination_type |
文字列 | ジョブタスクの実行終了方法 | 2025 年 12 月上旬より前に出力された行には設定されません |
task_parameters |
マップ | ジョブ タスクの実行で使用されるタスク レベルのパラメーター | 2025 年 12 月上旬より前に出力された行には設定されません |
setup_duration_seconds |
long | タスク実行のセットアップ フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
cleanup_duration_seconds |
long | タスク実行のクリーンアップ フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
execution_duration_seconds |
long | タスク実行の実行フェーズの期間 (秒単位) | 2025 年 12 月上旬より前に出力された行には設定されません |
Pipelines テーブル スキーマ
パイプライン テーブルは、緩やかに変化するディメンション テーブル (SCD2) です。 行が変更されると、新しい行が出力され、前の行が論理的に置き換えられます。
テーブル パス: system.lakeflow.pipelines
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このパイプラインが属するアカウントの ID | |
workspace_id |
文字列 | このパイプラインが属するワークスペースの ID | |
pipeline_id |
文字列 | パイプラインの ID | 1つのワークスペース内でのみ一意である |
pipeline_type |
文字列 | パイプラインの種類 | 使用可能な値については、「パイプラインの型の値」を参照してください。 |
name |
文字列 | パイプラインのユーザー指定の名前 | |
created_by |
文字列 | ユーザーの電子メール、またはパイプラインを作成したサービス プリンシパルの ID | |
run_as |
文字列 | パイプラインを実行するためにアクセス許可が使用されるユーザーのメールまたはサービス プリンシパルのID | |
tags |
マップ | このジョブに関連付けられているユーザー指定のカスタム タグ | |
settings |
構造体 | パイプラインの設定 | パイプラインの設定を参照してください |
configuration |
マップ | パイプラインのユーザー指定の構成 | |
change_time |
timestamp | パイプラインが最後に変更された時刻 | +00:00 (UTC) として記録されたタイムゾーン |
delete_time |
timestamp | パイプラインがユーザーによって削除された時刻 | +00:00 (UTC) として記録されたタイムゾーン |
create_time |
timestamp | パイプラインがユーザーによって作成された時刻。 タイムゾーンは +00:00 (UTC) として記録されます。 | 2025 年 12 月上旬より前に出力された行には設定されません |
クエリの例
-- Get the most recent version of a pipeline
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
-- Enrich billing logs with pipeline metadata
with latest_pipelines AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, pipeline_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.pipelines QUALIFY rn=1
)
SELECT
usage.*,
pipelines.*
FROM system.billing.usage
LEFT JOIN latest_pipelines
ON (usage.workspace_id = pipelines.workspace_id
AND usage.usage_metadata.dlt_pipeline_id = pipelines.pipeline_id)
WHERE
usage.usage_metadata.dlt_pipeline_id IS NOT NULL
パイプライン更新タイムラインのテーブルスキーマ
パイプライン更新タイムライン テーブルは変更不可であり、作成時に完了します。
テーブル パス: system.lakeflow.pipeline_update_timeline
| 列名 | データの種類 | Description | Notes |
|---|---|---|---|
account_id |
文字列 | このパイプラインが属するアカウントの ID | |
workspace_id |
文字列 | このパイプラインが属するワークスペースの ID | |
pipeline_id |
文字列 | パイプラインの ID | 1つのワークスペース内でのみ一意である |
update_id |
文字列 | パイプライン更新プログラムの ID | 1つのワークスペース内でのみ一意である |
update_type |
文字列 | パイプラインの更新の種類 | 使用可能な値については、「パイプラインの更新の種類の値」を参照してください。 |
request_id |
文字列 | 要求の ID。 更新を再試行または再起動する必要があった回数を理解するのに役立ちます | |
run_as_user_name |
文字列 | パイプラインの更新にアクセス許可が使用されているユーザーの電子メールまたはサービス プリンシパルの ID | |
trigger_type |
文字列 | この更新プログラムのトリガーとなった内容 | 使用可能な値については、「パイプライン トリガーの種類の値」を参照してください。 |
trigger_details |
構造体 | パイプラインのトリガーの詳細 | 使用可能な値については、「パイプライン トリガーの種類の詳細」を参照してください。 |
result_state |
文字列 | パイプライン更新の結果 | 複数の行に分割された 1 時間以上にわたって実行されている更新プログラムの場合、この列は更新の終了を表す行にのみ設定されます。 指定できる値については、「 パイプラインの結果リファレンス」を参照してください。 |
compute |
構造体 | パイプラインの更新で使用されるコンピューティング リソースの詳細 | |
period_start_time |
timestamp | パイプラインの更新または時間帯の開始時刻。 値は UTC タイムスタンプとして格納されます。 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
period_end_time |
timestamp | パイプライン更新の終了時刻またはある時間帯の終了時刻。 値は UTC タイムスタンプとして格納されます。 | タイムゾーン情報は、UTC を表す +00:00 とともに値の末尾に記録されます。 Databricks で長時間の実行を1時間ごとの間隔に分割する詳細については、タイムラインのスライスロジックを参照してください。 |
refresh_selection |
アレイ | fullRefresh なしで更新するテーブルの一覧 | |
full_refresh_selection |
アレイ | fullRefresh で更新するテーブルの一覧 | |
reset_checkpoint_selection |
アレイ | チェックポイントをクリアするストリーミング フローの一覧 |
クエリの例
-- This query gets the daily pipeline update count for a workspace for the last 7 days:
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
-- This query returns the daily pipeline update count for a workspace for the last 7 days, distributed by the outcome of the pipeline update.
SELECT
workspace_id,
COUNT(DISTINCT update_id) as update_count,
result_state,
to_date(period_start_time) as date
FROM system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
AND result_state IS NOT NULL
GROUP BY ALL
-- This query returns the average time of pipeline updates, measured in seconds. The records are organized by pipeline. A top 90 and a 95 percentile column show the average lengths of the pipeline's longest updates.
with pipeline_update_duration as (
SELECT
workspace_id,
pipeline_id,
update_id,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration
FROM
system.lakeflow.pipeline_update_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 7 DAYS
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.pipeline_id,
COUNT(DISTINCT t1.update_id) as update_count,
MEAN(t1.duration) as mean_seconds,
AVG(t1.duration) as avg_seconds,
PERCENTILE(t1.duration, 0.9) as p90_seconds,
PERCENTILE(t1.duration, 0.95) as p95_seconds
FROM
pipeline_update_duration t1
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
一般的な結合パターン
次のセクションでは、ジョブ システム テーブルでよく使用される結合パターンを強調表示するサンプル クエリを示します。
ジョブテーブルとジョブ実行タイムラインテーブルを結合する
ジョブ名を使用してジョブ実行をエンリッチする
with jobs as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
)
SELECT
job_run_timeline.*
jobs.name
FROM system.lakeflow.job_run_timeline
LEFT JOIN jobs USING (workspace_id, job_id)
ジョブ実行タイムラインと使用状況テーブルを結合する
ジョブ実行メタデータを使用して各ログをエンリッチする
次のクエリは、クラシック ジョブとサーバーレス ジョブの両方のジョブ実行メタデータを使用して課金ログを強化します。
with aggregated_job_runs AS (
SELECT
j.workspace_id,
COALESCE(t.job_id, j.job_id) as origin_job_id,
COALESCE(t.job_run_id, j.run_id) AS origin_job_run_id,
j.job_id as billing_job_id,
j.run_id as billing_run_id,
CASE WHEN j.root_task_run_id IS NOT NULL THEN true ELSE false END AS is_workflow_run
FROM
system.lakeflow.job_run_timeline j
LEFT JOIN
system.lakeflow.job_task_run_timeline t
ON
j.workspace_id = t.workspace_id
AND j.root_task_run_id = t.run_id
WHERE j.period_start_time >= CURRENT_DATE() - INTERVAL 7 DAYS
GROUP BY ALL
),
billing_logs_enriched AS (
SELECT
t2.origin_job_id,
t2.origin_job_run_id,
t1.*
FROM system.billing.usage t1
INNER JOIN aggregated_job_runs t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.billing_job_id
AND t1.usage_metadata.job_run_id = t2.billing_run_id
WHERE
billing_origin_product="JOBS" AND usage_date >= CURRENT_DATE() - INTERVAL 7 DAYS
)
SELECT
workspace_id,
origin_job_id AS job_id,
origin_job_run_id AS run_id,
sku_name,
SUM(usage_quantity) as total_usage_quantity,
SUM(CASE WHEN usage_metadata.job_run_id != origin_job_run_id THEN usage_quantity ELSE 0 END) AS workflow_run_usage_quantity,
COUNT(DISTINCT usage_metadata.job_run_id) - 1 AS workflow_runs
FROM billing_logs_enriched
GROUP BY ALL
ジョブ実行あたりのコストを計算する
このクエリは、billing.usage システム テーブルと結合して、ジョブの実行あたりのコストを計算します。
with jobs_usage AS (
SELECT
*,
usage_metadata.job_id,
usage_metadata.job_run_id as run_id,
identity_metadata.run_as as run_as
FROM system.billing.usage
WHERE billing_origin_product="JOBS"
),
jobs_usage_with_usd AS (
SELECT
jobs_usage.*,
usage_quantity * pricing.default as usage_usd
FROM jobs_usage
LEFT JOIN system.billing.list_prices pricing ON
jobs_usage.sku_name = pricing.sku_name
AND pricing.price_start_time <= jobs_usage.usage_start_time
AND (pricing.price_end_time >= jobs_usage.usage_start_time OR pricing.price_end_time IS NULL)
AND pricing.currency_code="USD"
),
jobs_usage_aggregated AS (
SELECT
workspace_id,
job_id,
run_id,
FIRST(run_as, TRUE) as run_as,
sku_name,
SUM(usage_usd) as usage_usd,
SUM(usage_quantity) as usage_quantity
FROM jobs_usage_with_usd
GROUP BY ALL
)
SELECT
t1.*,
MIN(period_start_time) as run_start_time,
MAX(period_end_time) as run_end_time,
FIRST(result_state, TRUE) as result_state
FROM jobs_usage_aggregated t1
LEFT JOIN system.lakeflow.job_run_timeline t2 USING (workspace_id, job_id, run_id)
GROUP BY ALL
ORDER BY usage_usd DESC
LIMIT 100
SUBMIT_RUN ジョブの使用状況ログを取得する
SELECT
*
FROM system.billing.usage
WHERE
EXISTS (
SELECT 1
FROM system.lakeflow.job_run_timeline
WHERE
job_run_timeline.job_id = usage_metadata.job_id
AND run_name = :run_name
AND workspace_id = :workspace_id
)
ジョブ タスクの実行タイムラインとクラスター テーブルを結合する
クラスター メタデータを使用してジョブ タスクの実行を強化する
with clusters as (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters QUALIFY rn=1
),
exploded_task_runs AS (
SELECT
*,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE array_size(compute_ids) > 0
)
SELECT
*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)
汎用コンピューティングで実行されているジョブを検索する
このクエリは、 compute.clusters システム テーブルと結合し、Jobs Compute ではなく All-Purpose Compute で実行されている最近のジョブを返します。
with clusters AS (
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, cluster_id ORDER BY change_time DESC) as rn
FROM system.compute.clusters
WHERE cluster_source="UI" OR cluster_source="API"
QUALIFY rn=1
),
job_tasks_exploded AS (
SELECT
workspace_id,
job_id,
EXPLODE(compute_ids) as cluster_id
FROM system.lakeflow.job_task_run_timeline
WHERE period_start_time >= CURRENT_DATE() - INTERVAL 30 DAY
GROUP BY ALL
),
all_purpose_cluster_jobs AS (
SELECT
t1.*,
t2.cluster_name,
t2.owned_by,
t2.dbr_version
FROM job_tasks_exploded t1
INNER JOIN clusters t2 USING (workspace_id, cluster_id)
)
SELECT * FROM all_purpose_cluster_jobs LIMIT 10;
過去 30 日間に実行されていないジョブを見つける
このクエリは、 lakeflow.jobs テーブルと lakeflow.job_run_timeline システム テーブルを結合して、過去 30 日間実行されていないジョブを返します。
with latest_jobs AS (
SELECT
*,
ROW_NUMBER() OVER (PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM system.lakeflow.jobs QUALIFY rn=1
),
latest_not_deleted_jobs AS (
SELECT
workspace_id,
job_id,
name,
change_time,
tags
FROM latest_jobs WHERE delete_time IS NULL
),
last_seen_job_timestamp AS (
SELECT
workspace_id,
job_id,
MAX(period_start_time) as last_executed_at
FROM system.lakeflow.job_run_timeline
WHERE
run_type="JOB_RUN"
GROUP BY ALL
)
SELECT
t1.workspace_id,
t1.job_id,
t1.name,
t1.change_time as last_modified_at,
t2.last_executed_at,
t1.tags
FROM latest_not_deleted_jobs t1
LEFT JOIN last_seen_job_timestamp t2
USING (workspace_id, job_id)
WHERE
(t2.last_executed_at <= CURRENT_DATE() - INTERVAL 30 DAYS) OR (t2.last_executed_at IS NULL)
ORDER BY last_executed_at ASC
ジョブ監視ダッシュボード
次のダッシュボードでは、システム テーブルを使用して、ジョブと運用の正常性の監視を開始できます。 これには、ジョブ パフォーマンスの追跡、障害の監視、リソース使用率などの一般的なユース ケースが含まれます。
ダッシュボードのダウンロードの詳細については、「システム テーブル を使用したジョブ コスト & パフォーマンスの監視」を参照してください。
Troubleshooting
ジョブが lakeflow.jobs テーブルにログに記録されていない
ジョブがシステム テーブルに表示されない場合:
- 過去 365 日間にジョブが変更されませんでした
- スキーマに存在するジョブのフィールドを変更して、新しいレコードを出力します。
- ジョブが別のリージョンで作成されました
- 最近のジョブ作成(テーブルの遅延)
job_run_timeline テーブルに表示されるジョブが見つかりません
すべてのジョブ実行がどこでも表示されるわけではありません。
JOB_RUN エントリはすべてのジョブ関連テーブルに表示されますが、WORKFLOW_RUN (ノートブック ワークフローの実行) は job_run_timeline にのみ記録され、SUBMIT_RUN (1 回限りの実行) は両方のタイムライン テーブルにのみ記録されます。 これらの実行は、jobs や job_tasksなどの他のジョブ システム テーブルには入力されません。
実行の 各種類 が表示され、アクセス可能な場所の詳細については、以下の実行の種類の表を参照してください。
ジョブ実行が billing.usage テーブルに表示されない
system.billing.usageでは、usage_metadata.job_id は、ジョブ コンピューティングまたはサーバーレス コンピューティングで実行されるジョブに対してのみ設定されます。
さらに、WORKFLOW_RUN ジョブには、usage_metadata.job_idに独自の usage_metadata.job_run_id や system.billing.usage 属性はありません。
代わりに、コンピューティング使用量は、それらをトリガーした親ノートブックに起因します。
つまり、ノートブックがワークフロー実行を起動すると、すべてのコンピューティング コストが、個別のワークフロー ジョブとしてではなく、親ノートブックの使用状況の下に表示されます。
詳細については、「使用状況メタデータ リファレンス」を参照してください。
汎用コンピューティングで実行されているジョブのコストを計算する
100% の精度では、専用コンピューティングで実行されるジョブの正確なコスト計算はできません。 対話型 (万能) コンピューティングでジョブを実行する場合、ノートブック、SQL クエリ、その他のジョブなどの複数のワークロードは、多くの場合、同じコンピューティング リソースで同時に実行されます。 クラスター リソースは共有されるため、コンピューティング コストと個々のジョブ実行の間に直接 1 対 1 のマッピングはありません。
正確なジョブ コストの追跡のために、Databricks では、専用のジョブ コンピューティングまたはサーバーレス コンピューティングでジョブを実行することをお勧めします。ここで、usage_metadata.job_id と usage_metadata.job_run_id により正確なコスト属性が可能になります。
万能コンピューティングを使用する必要がある場合は、次のことができます。
-
system.billing.usageに基づいて、クラスターの全体的な使用状況とusage_metadata.cluster_idのコストを監視します。 - ジョブ ランタイム メトリックを個別に追跡します。
- コスト見積もりは、共有リソースが原因で概算されることを検討してください。
コスト属性の詳細については、「使用状況メタデータ リファレンス」を参照してください。
参照値
次のセクションでは、ジョブ関連テーブルの選択列の参照を示します。
タイムライン テーブルのスライス ロジック
period_start_timeテーブルとperiod_end_timeテーブルのjob_run_timeline列とjob_task_run_timeline列には、ジョブ実行またはタスク実行のアクティブな期間が記録されます。
:::warning 重要な変更
2026年1月19日以降、タイムラインテーブルに生成される新しい行では、クロック時刻に揃えたスライスロジックを使用します。 既存の行は変更されません。
スライスは、実行の開始時刻に基づいて 1 時間間隔で作成されます。 たとえば、午後4時47分開始のジョブでは、午後4時47分から5時47分、午後5時47分から6時47分などの時間区切りが作成されます。
スライスはクロック時間の境界に合わせて配置されます。 たとえば、ジョブが午後4時47分に始まると、16時47分から17時まで、17時から18時まで、18時から19時までといったスライスを作成します。 詳細については クロック時間と整列したスライスロジックを参照してください。
:::
各行は、最大 1 時間のランタイムを記録します。 1 時間を超える実行は、複数の行に記録されます。 このスライスにより、実行時間の長いジョブを監視するための時間単位の細分性が確保されます。
Note
実行が開始されない場合は、 period_start_time が period_end_time等しい行で表されます。 これは、アクティブなランタイムがないことを示します。 実行が開始されなかった理由を理解するには、 termination_code 列を確認します。
実行時間の短いジョブ
実行時間が 1 時間未満の場合は、1 つの行が出力され、 period_start_time は実行の開始時刻に設定され、 period_end_time は実行の終了時刻に設定されます。
たとえば、ジョブが午後 12 時 13 分 (UTC) に開始され、午後 12 時 45 分 (UTC) に終了したジョブは、1 行で表されます。
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-06-08T12:13:01.605 | 2025-06-08T12:45:06.009 |
実行時間の長いジョブ
1 時間を超える実行の場合、複数の行が同じ run_idで出力され、それぞれが実行の期間の最大 1 時間を表します。
- 最初の行は、実行の実際の開始時刻から開始し、最初の実行時間の終わりに終了します。
- 中間行がある場合、前のスライス
period_end_timeに合わせて、完全な1時間単位のウィンドウ全体にわたって配置されます。 - 最後の行は、前のスライスの先頭から始まり、実行の実際の終了時刻で終了します。
たとえば、午後 4 時 47 分 (UTC) から午後 8 時 28 分 (UTC) まで実行されたジョブは、複数の行にスライスされます。 各行は、最後の行を除いて 1 時間のアクティビティを表します。これは短い場合があります。
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T16:47:55.992 | 2025-07-01T17:47:56.434 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T17:47:56.434 | 2025-07-01T18:47:58.876 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T18:47:58.876 | 2025-07-01T19:47:59.682 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-07-01T19:47:59.682 | 2025-07-01T20:28:29.743 |
クロック時間に合わせたスライスロジック
Note
このスライス ロジックは 、2026 年 1 月 19 日以降のジョブ タイムライン テーブルの新しい行に適用されます。
2026 年 1 月 19 日以降、タイムラインテーブルでは、時間ごとに揃えられたスライシングが使用されます。 すべてのタイム スライスは、標準クロック時間の境界に合わせて調整されます。
同じクロック時間内に開始および終了するジョブ実行が 1 時間未満の場合、1 行が出力されます。
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 174832649710507 | 2025-12-08T12:13:01.605 | 2025-12-08T12:45:06.009 |
時刻の境界を越えるジョブの実行の場合、複数の行が出力され、その分割は時刻に合わせて配置されます。
- 最初の行は、実行の実際の開始時刻から始まり、次のクロック時間の境界で終了します。
- 中間行 (ある場合) は、完全なクロック時間にまたがります。 たとえば、午後 2:00~3:00、午後 3:00~4:00 などです。
- 最後の行はクロック時間の境界から始まり、実行の実際の終了時刻で終了します。
たとえば、午前 1 時 25 分から午前 3 時 40 分までの UTC で実行されたジョブの実行時間は、3 つの行に分割されます。
| workspace_id | job_id | run_id | period_start_time | period_end_time |
|---|---|---|---|---|
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T01:25:00.000 | 2025-12-01T02:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T02:00:00.000 | 2025-12-01T03:00:00.000 |
| 6051921418418893 | 280090038844882 | 55408597258956 | 2025-12-01T03:00:00.000 | 2025-12-01T03:40:00.000 |
トリガーの種類の値
job_run_timelineテーブルでは、trigger_type列に使用できる値は次のとおりです。
CONTINUOUSCRONFILE_ARRIVALONETIMEONETIME_RETRY
Run の種類の値
job_run_timelineテーブルでは、run_type列に使用できる値は次のとおりです。
| タイプ | Description | UI の場所 | API エンドポイント | システム テーブル |
|---|---|---|---|---|
JOB_RUN |
標準ジョブの実行 | ジョブ & ジョブ実行 UI | /jobs および /jobs/runs エンドポイント | ジョブ, job_tasks, job_run_timeline, job_task_run_timeline |
SUBMIT_RUN |
POST /jobs/runs/submit を使用した 1 回限りの実行 | ジョブ実行 UI のみ | /jobs/runs のエンドポイントのみ | job_run_timeline、job_task_run_timeline |
WORKFLOW_RUN |
ノートブック ワークフローから開始された実行 | 表示されない | アクセス不可 | job_run_timeline |
結果の状態値
job_task_run_timelineテーブルとjob_run_timelineテーブルでは、result_state列に使用できる値は次のとおりです。
| State | Description |
|---|---|
SUCCEEDED |
実行が正常に完了しました。 |
FAILED |
実行はエラーで完了しました。 |
SKIPPED |
条件が満たされなかったため、実行されませんでした。 |
CANCELLED |
ユーザーの要求で実行が取り消されました。 |
TIMED_OUT |
実行は、タイムアウトに達した後に停止されました。 |
ERROR |
実行はエラーで完了しました。 |
BLOCKED |
アップストリームの依存関係で実行がブロックされました。 |
NULL |
この行は、実行時間の長いジョブの中間スライスを表します。
result_stateは、実行の終了を表す行でのみ使用できます。 |
終了コード値
job_task_run_timelineテーブルとjob_run_timelineテーブルでは、termination_code列に使用できる値は次のとおりです。
| 終了コード | Description |
|---|---|
SUCCESS |
実行が正常に完了しました。 |
CANCELLED |
実行は Databricks プラットフォームによって実行中に取り消されました。たとえば、最大実行時間を超えた場合などです。 |
SKIPPED |
たとえば、アップストリーム タスクの実行に失敗した場合、依存関係の種類の条件が満たされなかった場合、または実行する重要なタスクがなかった場合など、実行が実行されませんでした。 |
DRIVER_ERROR |
Spark ドライバーとの通信中に、実行でエラーが発生しました。 |
CLUSTER_ERROR |
クラスター エラーが原因で実行に失敗しました。 |
REPOSITORY_CHECKOUT_FAILED |
サード パーティのサービスとの通信中にエラーが発生したため、チェックアウトを完了できませんでした。 |
INVALID_CLUSTER_REQUEST |
クラスターを起動するための無効な要求を発行したため、実行に失敗しました。 |
WORKSPACE_RUN_LIMIT_EXCEEDED |
ワークスペースは、同時実行中のジョブの最大数に達しました。 より大きな期間にわたって実行をスケジュールすることを検討してください。 |
FEATURE_DISABLED |
ワークスペースで使用できない機能にアクセスしようとしたため、実行に失敗しました。 |
CLUSTER_REQUEST_LIMIT_EXCEEDED |
クラスターの作成、開始、アップサイズの要求の数が、割り当てられたレート制限を超えています。 実行をより長い期間にわたって分散することを検討してください。 |
STORAGE_ACCESS_ERROR |
顧客の BLOB ストレージにアクセスするときにエラーが発生したため、実行に失敗しました。 |
RUN_EXECUTION_ERROR |
タスクエラーが発生して実行が完了しました。 |
UNAUTHORIZED_ERROR |
リソースへのアクセス中にアクセス許可の問題が発生したため、実行に失敗しました。 |
LIBRARY_INSTALLATION_ERROR |
ユーザーが要求したライブラリのインストール中に実行に失敗しました。 原因には、指定されたライブラリが無効であるか、ライブラリをインストールするためのアクセス許可が不十分である、などがありますが、これらに限定されません。 |
MAX_CONCURRENT_RUNS_EXCEEDED |
スケジュールされた実行が、ジョブに設定されている同時実行の最大数の制限を超えています。 |
MAX_SPARK_CONTEXTS_EXCEEDED |
実行は、作成するように構成されているコンテキストの最大数に既に達しているクラスターでスケジュールされます。 |
RESOURCE_NOT_FOUND |
実行に必要なリソースが存在しません。 |
INVALID_RUN_CONFIGURATION |
構成が無効なため、実行に失敗しました。 |
CLOUD_FAILURE |
クラウド プロバイダーの問題が原因で実行に失敗しました。 |
MAX_JOB_QUEUE_SIZE_EXCEEDED |
ジョブ レベルのキュー サイズ制限に達したため、実行はスキップされました。 |
パイプラインの種類の値
pipelinesテーブルでは、pipeline_type列に使用できる値は次のとおりです。
| パイプラインの種類 | Description |
|---|---|
ETL_PIPELINE |
標準パイプライン |
MATERIALIZED_VIEW |
Databricks SQL の具体化されたビュー |
STREAMING_TABLE |
Databricks SQL のストリーミング テーブル |
INGESTION_PIPELINE |
Lakeflow Connect インジェクター |
INGESTION_GATEWAY |
Lakeflow Connect ゲートウェイ データ取り込み装置 |
パイプラインの結果リファレンス
pipeline_update_timelineテーブルでは、result_state列に使用できる値は次のとおりです。
COMPLETEDFAILEDCANCELED
パイプライン設定リファレンス
pipelinesテーブルでは、settings列に使用できる値は次のとおりです。
| Value | Description |
|---|---|
photon |
Photon を使用してパイプラインを実行するかどうかを示すフラグ |
development |
開発モードまたは運用モードでパイプラインを実行するかどうかを示すフラグ |
continuous |
パイプラインを継続的に実行するかどうかを示すフラグ |
serverless |
サーバーレス クラスターでパイプラインを実行するかどうかを示すフラグ |
edition |
パイプラインを実行する製品エディション |
channel |
使用するパイプライン ランタイムのバージョン |
パイプライン更新タイプの値
pipeline_update_timelineテーブルでは、update_type列に使用できる値は次のとおりです。
API_CALLRETRY_ON_FAILURESERVICE_UPGRADESCHEMA_CHANGEJOB_TASKUSER_ACTIONDBSQL_REQUESTSETTINGS_CHANGESCHEMA_EXPLORATIONINFRASTRUCTURE_MAINTENANCESTART_RESOURCES
パイプライン トリガーの種類の値
pipeline_update_timelineテーブルでは、trigger_type列に使用できる値は次のとおりです。
| Value | Description |
|---|---|
job_task |
パイプラインの更新をトリガーしたjob_taskの詳細 |
パイプライン トリガーの種類の詳細
pipeline_update_timeline テーブルでは、trigger_type.job_task構造体に使用できる値は次のとおりです。
| Value | Description | Notes |
|---|---|---|
job_id |
パイプラインの更新をトリガーしたジョブの ID |
SQL_SCHEDULE値は、このjob_taskが SQL コードの一部としてスケジュールされていることを示します |
job_task_run_id |
パイプラインの更新をトリガーしたジョブ タスク実行の ID |
SQL_SCHEDULE値は、このjob_taskが SQL コードの一部としてスケジュールされていることを示します |
performance_target |
サーバーレス パイプラインの更新時にのみ設定されます |
PERFORMANCE_OPTIMIZEDまたはSTANDARD |