ジョブシステムテーブルリファレンス
プレビュー
このシステムテーブルは パブリック プレビュー段階です。 テーブルにアクセスするには、 system
カタログでスキーマを有効にする必要があります。 詳細については、「 システムテーブル スキーマを有効にする」を参照してください。
注:
lakeflow
スキーマは、以前は workflow
と呼ばれていました。両方のスキーマの内容は同じです。 lakeflow
スキーマを表示するには、個別に有効にする必要があります。
この記事では、 lakeflow
システムテーブルを使用して、アカウント内のジョブを監視する方法について説明します。これらのテーブルには、同じクラウドリージョンにデプロイされたアカウント内のすべてのワークスペースのレコードが含まれます。別のリージョンのレコードを表示するには、そのリージョンにデプロイされたワークスペースからテーブルを表示する必要があります。
system.lakeflow
は、アカウント管理者が有効にする必要があります。SystemSchemas APIを使用して有効にできます。
これらのテーブルをジョブコストとヘルスオブザーバビリティに使用する例については、「 システムテーブルを使用したジョブコストのモニタリング」を参照してください。
注:
これらのテーブルはasia-south1
リージョンでは使用できません。
利用可能なジョブテーブル
すべてのジョブ関連システムテーブルはsystem.lakeflow
スキーマにあります。現在、スキーマには4つのテーブルがあります。
jobs
:ジョブの作成、削除、基本情報を追跡します。job_tasks
: ジョブタスクの作成、削除、および基本情報を追跡します。job_run_timeline
:ジョブの開始、終了、および実行結果の状態を記録します。job_task_run_timeline
:ジョブタスクの開始、終了、結果の状態を記録します。
ジョブテーブルスキーマ
jobs
テーブルは、ゆっくり変化するディメンションテーブルです。行が変更されると、新しい行が発行され、論理的に前の行を置き換えます。
テーブルパス:このシステムテーブルは system.lakeflow.jobs
にあります。
列名 |
データ型 |
説明 |
---|---|---|
|
文字列 |
このジョブが属するアカウントのID。 |
|
文字列 |
このジョブが属するワークスペースのID。 |
|
文字列 |
ジョブのID。このキーは、単一のワークスペース内でのみ一意です。 |
|
文字列 |
ユーザーが指定したジョブ名。 |
|
文字列 |
ユーザー指定のジョブの説明。 2024 年 8 月下旬より前に出力された行には入力されません。 |
|
文字列 |
ジョブを作成したプリンシパルのID。 |
|
文字列 |
このジョブに関連付けられているユーザー提供のカスタムタグ。 |
|
タイムスタンプ |
ジョブが最後に変更された時刻。タイムゾーン情報は値の末尾に記録され、 |
|
タイムスタンプ |
ジョブがユーザーによって削除された時刻。タイムゾーン情報は値の末尾に記録され、 |
|
文字列 |
ジョブ実行に使用される権限を持つユーザーもしくはサービスプリンシパルのID。 |
ジョブタスクテーブルスキーマ
ジョブ タスク テーブルは、緩やかに変化するディメンション テーブルです。 行が変更されると、新しい行が生成され、論理的に前の行が置き換えられます。
テーブルパス:このシステムテーブルは system.lakeflow.job_tasks
にあります。
列名 |
データ型 |
説明 |
---|---|---|
|
文字列 |
このジョブが属するアカウントのID。 |
|
文字列 |
このジョブが属するワークスペースのID。 |
|
文字列 |
ジョブのID。このキーは、単一のワークスペース内でのみ一意です。 |
|
文字列 |
ジョブ内のタスクの参照キー。このキーは、単一のジョブ内でのみ一意です。 |
|
配列 |
このタスクのすべての上流の依存関係のタスクキー。 |
|
タイムスタンプ |
タスクが最後に変更された時刻。タイムゾーン情報は値の末尾に記録され、 |
|
タイムスタンプ |
タスクがユーザーによって削除された時刻。タイムゾーン情報は値の末尾に記録され、 |
ジョブ実行タイムラインテーブルスキーマ
ジョブ実行タイムライン テーブルは不変であり、生成された時点で完全です。
テーブルパス:このシステムテーブルは system.lakeflow.job_run_timeline
にあります。
列名 |
データ型 |
説明 |
---|---|---|
|
文字列 |
このジョブが属するアカウントのID。 |
|
文字列 |
このジョブが属するワークスペースのID。 |
|
文字列 |
ジョブのID。このキーは、単一のワークスペース内でのみ一意です。 |
|
文字列 |
ジョブ実行のID。 |
|
タイムスタンプ |
実行もしくは期間の開始時刻。タイムゾーン情報は値の末尾に記録され、 |
|
タイムスタンプ |
実行もしくは期間の終了時刻。タイムゾーン情報は値の末尾に記録され、 |
|
文字列 |
実行を起動できるトリガーの種類。 使用可能な値については、「トリガーの種類の値」を参照してください |
|
文字列 |
ジョブ実行のタイプ。 使用可能な値については、「 実行タイプの値」を参照してください。 |
|
文字列 |
このジョブ実行に関連付けられたユーザー指定の実行名。 |
|
配列 |
親ジョブ実行のコンピュート ID を含む配列。 |
|
文字列 |
ジョブ実行の結果。 使用可能な値については、 結果の状態の値を参照してください。 |
|
文字列 |
ジョブ実行の終了コード。 使用可能な値については、 終了コードの値を参照してください。 2024 年 8 月下旬より前に出力された行には入力されません。 |
|
マップ |
ジョブ実行で使用されるジョブ・レベルのパラメーター。 2024 年 8 月下旬より前に出力された行には入力されません。 |
実行タイプの値
run_type
列に指定できる値は次のとおりです。
JOB_RUN
SUBMIT_RUN
: POST /api/2.1/ジョブ/実行/submitで作成した1回限りの実行。WORKFLOW_RUN
: ノートブック ワークフローから開始されたジョブ実行。
終了コード値
termination_code
列に指定できる値は次のとおりです。
SUCCESS
CANCELLED
SKIPPED
DRIVER_ERROR
CLUSTER_ERROR
REPOSITORY_CHECKOUT_FAILED
INVALID_CLUSTER_REQUEST
WORKSPACE_RUN_LIMIT_EXCEEDED
FEATURE_DISABLED
CLUSTER_REQUEST_LIMIT_EXCEEDED
STORAGE_ACCESS_ERROR
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
ジョブタスク実行タイムラインテーブルスキーマ
ジョブ タスク実行タイムライン テーブルは不変であり、生成された時点で完全です。
テーブルパス:このシステムテーブルは system.lakeflow.job_task_run_timeline
にあります。
列名 |
データ型 |
説明 |
---|---|---|
|
文字列 |
このジョブが属するアカウントのID。 |
|
文字列 |
このジョブが属するワークスペースのID。 |
|
文字列 |
ジョブのID。このキーは、単一のワークスペース内でのみ一意です。 |
|
文字列 |
タスク実行のID。 |
|
文字列 |
ジョブ実行の ID。 2024 年 8 月下旬より前に出力された行には入力されません。 |
|
文字列 |
親実行の ID。 2024 年 8 月下旬より前に出力された行には入力されません。 |
|
タイムスタンプ |
タスクもしくは期間の開始時刻。タイムゾーン情報は値の末尾に記録され、 |
|
タイムスタンプ |
タスクもしくは期間の終了時刻。タイムゾーン情報は値の末尾に記録され、 |
|
文字列 |
ジョブ内のタスクの参照キー。このキーは、単一のジョブ内でのみ一意です。 |
|
配列 |
ジョブタスクが使用するコンピュートのIDを含む配列。 |
|
文字列 |
ジョブタスク実行の結果。 |
|
文字列 |
タスク実行の終了コード。 この表の下にある可能な値を参照してください。 2024 年 8 月下旬より前に出力された行には入力されません。 |
result_state
列に指定できる値は次のとおりです。
SUCCEEDED
FAILED
SKIPPED
CANCELLED
TIMED_OUT
ERROR
BLOCKED
termination_code
列に指定できる値は次のとおりです。
SUCCESS
CANCELLED
SKIPPED
DRIVER_ERROR
CLUSTER_ERROR
REPOSITORY_CHECKOUT_FAILED
INVALID_CLUSTER_REQUEST
WORKSPACE_RUN_LIMIT_EXCEEDED
FEATURE_DISABLED
CLUSTER_REQUEST_LIMIT_EXCEEDED
STORAGE_ACCESS_ERROR
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
クエリの例
このセクションには、LakeFlowテーブルを最大限に活用するために使用できるサンプルクエリーが含まれています。
ジョブの最新バージョンを取得する
jobs
およびjob_tasks
テーブルは徐々に変化するディメンジョンテーブルであるため、変更が行われるたびに新しいレコードが作成されます。ジョブの最新バージョンを取得するには、change_time
列で並べ替えます。
SELECT
*,
ROW_NUMBER() OVER(PARTITION BY workspace_id, job_id ORDER BY change_time DESC) as rn
FROM
system.lakeflow.jobs QUALIFY rn=1
ワークスペース別の1日あたりのジョブ数
このクエリーは、過去7日間のワークスペース別の1日あたりのジョブ数を取得します:
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
ワークスペース別の1日あたりのジョブステータスの分布
このクエリーは、過去7日間のワークスペース別の1日あたりのジョブ数を、ジョブの実行結果で配分して返します。このクエリーは、ジョブが保留中もしくは実行中の状態にあるレコードをすべて削除します。
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
最も長く実行されているジョブの概要
このクエリーは、ジョブ実行の平均時間を秒単位で返します。レコードはジョブ別に整理されています。上位90パーセンタイルと95パーセンタイルの列には、ジョブの最長実行の平均長さが表示されます。
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
),
most_recent_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
t1.workspace_id,
t1.job_id,
first(t2.name, TRUE) as name,
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
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
GROUP BY ALL
ORDER BY mean_seconds DESC
LIMIT 100
runSubmitを介して実行されたジョブの実行時間(つまり、 Airflow)
このクエリは、 run_name
パラメーターに基づいて特定のジョブの履歴ランタイムを提供します。 クエリを機能させるには、 run_name
を設定する必要があります。
また、 INTERVAL 60 DAYS
セクションの日数を更新して、解析の時間の長さを編集することもできます。
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
ジョブ実行の分析
このクエリーは、特定のジョブの過去のランタイムを提供します。クエリーを機能させるには、workspace_id
およびjob_id
を設定する必要があります。
また、 INTERVAL 60 DAYS
セクションの日数を更新して、解析の時間の長さを編集することもできます。
with job_run_duration as (
SELECT
workspace_id,
job_id,
run_id,
min(period_start_time) as run_start,
max(period_start_time) as run_end,
CAST(SUM(period_end_time - period_start_time) AS LONG) as duration,
FIRST(result_state, TRUE) as result_state
FROM
system.lakeflow.job_run_timeline
WHERE
period_start_time > CURRENT_TIMESTAMP() - INTERVAL 60 DAYS
AND workspace_id={workspace_id}
AND job_id={job_id}
GROUP BY ALL
ORDER BY run_start DESC
),
most_recent_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
t1.workspace_id,
t1.job_id,
t2.name,
t1.run_id,
t1.run_start,
t1.run_end,
t1.duration,
t1.result_state
FROM job_run_duration t1
LEFT OUTER JOIN most_recent_jobs t2 USING (workspace_id, job_id)
汎用コンピュートで実行されるジョブ
このクエリーは、compute.clusters
システムテーブルと結合して、ジョブコンピュートではなく汎用コンピュートで実行されている最近のジョブを返します。
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;
再試行されたジョブ実行
このクエリは、再試行されたジョブ実行のリストと、各実行の再試行回数を収集します。
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;