メインコンテンツまでスキップ

Jobs システムテーブル リファレンス

注記

lakeflowスキーマは以前はworkflowと呼ばれていました。どちらのスキーマも内容は同じです。

この記事は、アカウントのジョブアクティビティを記録する lakeflow システムテーブルのリファレンスです。これらのテーブルには、同じクラウド リージョンにデプロイされたアカウント内のすべてのワークスペースのレコードが含まれます。別のリージョンのレコードを表示するには、そのリージョンにデプロイされたワークスペースからテーブルを表示する必要があります。

必要条件

  • これらのシステムテーブルにアクセスするには、ユーザーは次のいずれかを行う必要があります。

使用可能なジョブ テーブル

すべてのジョブ関連システムテーブルはsystem.lakeflowスキーマにあります。現在、スキーマには4つのテーブルがあります。

テーブル

説明

ストリーミングをサポート

無料保存期間

グローバルまたは地域データを含む

jobs (パブリック プレビュー)

アカウントで作成されたすべてのジョブを追跡します

あり

365日

リージョン

job_tasks (パブリック プレビュー)

アカウントで実行されるすべてのジョブタスクを追跡します

あり

365日

リージョン

job_run_timeline (パブリック プレビュー)

ジョブの実行と関連するメタデータを追跡します

あり

365日

リージョン

job_task_run_timeline (パブリック プレビュー)

ジョブタスクの実行と関連するメタデータを追跡します

あり

365日

リージョン

詳細なスキーマリファレンス

次のセクションでは、各ジョブ関連のシステムテーブルのスキーマ参照について説明します。

ジョブ テーブル スキーマ

jobs テーブルは、緩やかに変化するディメンション テーブル (SCD2) です。行が変更されると、新しい行が生成され、論理的に前の行が置き換えられます。

テーブル パス : system.lakeflow.jobs

列名

データ型

説明

account_id

string

このジョブが属するアカウントの ID

workspace_id

string

このジョブが属するワークスペースの ID

job_id

string

ジョブのID

1 つのワークスペース内でのみ一意

name

string

ユーザーが指定したジョブの名前

description

string

ユーザー指定のジョブの説明

このフィールドは、 顧客管理のキー が設定されている場合、空になります。 2024 年 8 月下旬より前に出力された行には設定されません

creator_id

string

ジョブを作成したプリンシパルの ID

tags

string

このジョブに関連付けられたユーザー指定のカスタムタグ

change_time

timestamp

ジョブが最後に変更された時刻

+00:00 (UTC) として記録されたタイムゾーン

delete_time

timestamp

ジョブがユーザーによって削除された時刻

+00:00 (UTC) として記録されたタイムゾーン

run_as

string

ジョブ実行にアクセス許可が使用されているユーザーまたはサービスプリンシパルの ID

クエリの例

SQL
-- 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

列名

データ型

説明

account_id

string

このジョブが属するアカウントの ID

workspace_id

string

このジョブが属するワークスペースの ID

job_id

string

ジョブのID

1 つのワークスペース内でのみ一意

task_key

string

ジョブ内のタスクの参照キー

1つのジョブ内でのみ一意

depends_on_keys

array

このタスクのすべてのアップストリーム依存関係のタスクキー

change_time

timestamp

タスクが最後に変更された時刻

+00:00 (UTC) として記録されたタイムゾーン

delete_time

timestamp

タスクがユーザーによって削除された時刻

+00:00 (UTC) として記録されたタイムゾーン

クエリの例

SQL
-- 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

列名

データ型

説明

account_id

string

このジョブが属するアカウントの ID

workspace_id

string

このジョブが属するワークスペースの ID

job_id

string

ジョブのID

このキーは、1 つのワークスペース内でのみ一意です

run_id

string

ジョブランのID

period_start_time

timestamp

実行または期間の開始時刻

タイムゾーン情報は、UTC を表す +00:00 で値の末尾に記録されます

period_end_time

timestamp

実行または期間の終了時刻

タイムゾーン情報は、UTC を表す +00:00 で値の末尾に記録されます

trigger_type

string

実行を起動できるトリガーの種類

使用可能な値については、「トリガーの種類の値」を参照してください

run_type

string

ジョブ実行のタイプ

使用可能な値については、「実行タイプの値」を参照してください

run_name

string

このジョブ実行に関連付けられたユーザー指定の実行名

compute_ids

array

親ジョブ実行のジョブ コンピュート ID を含む配列

WORKFLOW_RUN実行タイプで使用されるジョブ クラスターを識別するために使用します。その他のコンピュート情報については、 job_task_run_timeline 表を参照してください。 2024 年 8 月下旬より前に出力された行には設定されません

result_state

string

ジョブ実行の結果

使用可能な値については、結果の状態の値を参照してください

termination_code

string

ジョブ実行の終了コード

使用可能な値については、 終了コードの値を参照してください。 2024 年 8 月下旬より前に出力された行には設定されません

job_parameters

マップ

ジョブ実行で使用されるジョブ・レベルのパラメーター

非推奨の ノートブック 設定は、このフィールドに含まれません。 2024 年 8 月下旬より前に出力された行には設定されません

クエリの例

SQL
-- 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

列名

データ型

説明

account_id

string

このジョブが属するアカウントの ID

workspace_id

string

このジョブが属するワークスペースの ID

job_id

string

ジョブのID

1 つのワークスペース内でのみ一意

run_id

string

タスク実行の ID

job_run_id

string

ジョブランのID

2024 年 8 月下旬より前に出力された行には設定されません

parent_run_id

string

親実行の ID

2024 年 8 月下旬より前に出力された行には設定されません

period_start_time

timestamp

タスクまたは期間の開始時刻

タイムゾーン情報は、UTC を表す +00:00 で値の末尾に記録されます

period_end_time

timestamp

タスクまたは期間の終了時刻

タイムゾーン情報は、UTC を表す +00:00 で値の末尾に記録されます

task_key

string

ジョブ内のタスクの参照キー

このキーは、1 つのジョブ内でのみ一意です

compute_ids

array

コンピュート配列には、ジョブ クラスター、対話型クラスター、およびジョブ タスクで使用される SQLウェアハウスの ID が含まれています

result_state

string

ジョブタスク実行の結果

使用可能な値については、結果の状態の値を参照してください

termination_code

string

タスク実行の終了コード

使用可能な値については、 終了コードの値を参照してください。 2024 年 8 月下旬より前に出力された行には設定されません

一般的な結合パターン

次のセクションでは、ジョブシステムテーブルで一般的に使用される結合パターンを示すサンプルクエリを示します。

ジョブ テーブルとジョブ 実行タイムライン テーブルを結合します

ジョブ名によるジョブ実行の強化

SQL
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)

ジョブ実行タイムラインと使用状況テーブルを結合する

各請求ログをジョブ実行メタデータで強化する

SQL
SELECT
t1.*,
t2.*
FROM system.billing.usage t1
LEFT JOIN system.lakeflow.job_run_timeline t2
ON t1.workspace_id = t2.workspace_id
AND t1.usage_metadata.job_id = t2.job_id
AND t1.usage_metadata.job_run_id = t2.run_id
AND t1.usage_start_time >= date_trunc("Hour", t2.period_start_time)
AND t1.usage_start_time < date_trunc("Hour", t2.period_end_time) + INTERVAL 1 HOUR
WHERE
billing_origin_product="JOBS"

ジョブ実行あたりのコストを計算する

このクエリは、 billing.usage システムテーブルと結合して、ジョブ実行あたりのコストを計算します。

SQL
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ジョブの使用状況ログを取得する

SQL
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
)

ジョブ タスク 実行 タイムライン テーブルとクラスター テーブルを結合する

クラスター メタデータによるジョブタスク実行の拡張

SQL
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
exploded_task_runs.*,
clusters.*
FROM exploded_task_runs t1
LEFT JOIN clusters t2
USING (workspace_id, cluster_id)

all-purpose コンピュートで実行されているジョブの特定

このクエリーは、compute.clusters システムテーブルと結合して、ジョブコンピュートではなく汎用コンピュートで実行されている最近のジョブを返します。

SQL
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
),
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;

ジョブ モニタリングダッシュボード

次のダッシュボードでは、システムテーブルを使用して、ジョブと運用の正常性のモニタリングを開始するのに役立ちます。 これには、ジョブのパフォーマンス追跡、障害モニタリング、リソース使用率などの一般的なユースケースが含まれます。

ジョブコスト監視ダッシュボード

ダッシュボードのダウンロードに関する情報については、システムテーブルによるジョブのコストとパフォーマンスの監視を参照してください。

トラブルシューティング

ジョブが lakeflow.jobs テーブルに記録されない

ジョブがシステムテーブルに表示されない場合:

  • ジョブが過去 365 日間に変更されていない

    • スキーマに存在するジョブのフィールドのいずれかを変更して、新しいレコードを出力します。
  • ジョブが別のリージョンで作成されました

  • 最近のジョブ作成 (テーブルラグ)

job_run_timeline テーブルに表示されるジョブが見つかりません

すべてのジョブ実行がどこでも表示されるわけではありません。 JOB_RUNエントリはすべてのジョブ関連テーブルに表示されますが、WORKFLOW_RUN (ノートブック ワークフローの実行) はjob_run_timelineにのみ記録され、SUBMIT_RUN (1 回だけ送信された実行) は両方のタイムライン テーブルにのみ記録されます。これらの実行は、 jobsjob_tasksなどの他のジョブシステムテーブルには入力されません。

各実行タイプが表示され、アクセス可能な場所の詳細な内訳については、以下の 実行タイプの 表を参照してください。

ジョブの実行が billing.usage テーブルに表示されない

system.billing.usageでは、ジョブ コンピュートまたはサーバレス コンピュートで実行されるジョブに対してのみusage_metadata.job_idが入力されます。

さらに、WORKFLOW_RUNジョブには、 system.billing.usageに独自のusage_metadata.job_id属性やusage_metadata.job_run_id属性はありません。代わりに、コンピュートの使用は、それらをトリガーした親ノートブックに起因します。つまり、ノートブックがワークフロー実行を起動すると、すべてのコンピュート コストは、個別のワークフロー ジョブとしてではなく、親ノートブックの使用量の下に表示されます。

詳細については、「 使用状況メタデータのリファレンス 」を参照してください。

all-purposeコンピュートで実行されるジョブのコストを計算する

わざとコンピュートで動いているジョブのコスト計算は、100%の精度では不可能です。 ジョブが対話型 (汎用) コンピュートで実行される場合、ノートブック、 SQL クエリ、その他のジョブなどの複数のワークロードは、多くの場合、同じコンピュート リソースで同時に実行されます。 クラスター リソースは共有されるため、コンピューティング コストと個々のジョブ実行との間に直接的な 1 対 1 のマッピングはありません。

正確なジョブコスト追跡のために、 Databricks は、usage_metadata.job_idusage_metadata.job_run_idが正確なコストの帰属を可能にする専用のジョブ コンピュートまたはサーバレス コンピュートでジョブを実行することをお勧めします。

all-purposeコンピュートを使用する必要がある場合は、次のことができます。

  • usage_metadata.cluster_idに基づいて、クラスターの全体的な使用量とコストを system.billing.usage で監視します。
  • ジョブのランタイムメトリクスを個別に追跡します。
  • コストの見積もりは、共有リソースによる概算であることを考慮してください。

コスト属性の詳細については、「 使用状況メタデータのリファレンス 」を参照してください。

リファレンス

次のセクションでは、ジョブ関連テーブルの select 列の参照について説明します。

トリガーの種類の値

trigger_type列に指定できる値は次のとおりです。

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

実行タイプの値

run_type列に指定できる値は次のとおりです。

タイプ

説明

UI の場所

API エンドポイント

システムテーブル

JOB_RUN

標準ジョブ実行

ジョブ & ジョブ 実行 UI

/jobs および /jobs/runs エンドポイント

jobs, job_tasks, job_run_timeline, job_task_run_timeline

SUBMIT_RUN

POST /jobs/runs/submitによる1回限りの実行

ジョブは UI のみを実行します

/ジョブ/実行エンドポイントのみ

job_run_timeline, job_task_run_timeline

WORKFLOW_RUN

ノートブックワークフローから開始された実行

非表示

アクセス権がありません

ジョブ

結果の状態の値

result_state列に指定できる値は次のとおりです。

状態

説明

SUCCEEDED

実行は正常に完了しました

FAILED

実行はエラーで完了しました

SKIPPED

条件が満たされなかったため、実行は実行されませんでした

CANCELLED

ユーザーの要求により、実行がキャンセルされました

TIMED_OUT

タイムアウトに達した後、実行が停止しました

ERROR

実行はエラーで完了しました

BLOCKED

実行がアップストリームの依存関係でブロックされました

終了コード値

termination_code列に指定できる値は次のとおりです。

終了コード

説明

SUCCESS

実行は正常に完了しました

CANCELLED

実行は、Databricks プラットフォームによる実行中にキャンセルされました。たとえば、最大実行時間を超えた場合などです

SKIPPED

実行が実行されなかった (たとえば、アップストリーム タスクの実行が失敗した場合、依存関係タイプの条件が満たされなかった場合、または実行するマテリアル タスクがなかった場合)

DRIVER_ERROR

Spark ドライバーとの通信中に実行でエラーが発生しました

CLUSTER_ERROR

クラスター エラーのため、実行に失敗しました

REPOSITORY_CHECKOUT_FAILED

サードパーティのサービスとの通信中にエラーが発生したため、チェックアウトを完了できませんでした

INVALID_CLUSTER_REQUEST

クラスターを開始するための無効な要求を発行したため、実行が失敗しました

WORKSPACE_RUN_LIMIT_EXCEEDED

ワークスペースが、並列 active 実行の最大数のクォータに達しました。 より長い時間枠での実行をスケジュールすることを検討してください

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

ジョブ・レベルのキュー・サイズ制限に達したため、実行がスキップされました