作業系統數據表參考
重要
此系統資料表處於公開預覽狀態。 若要存取資料表,必須在system
目錄啟用結構描述。 如需詳細資訊,請參閱啟用系統資料表結構描述。
注意
架構 lakeflow
先前稱為 workflow
。 這兩個架構的內容都相同。 若要讓 lakeflow
架構可見,您必須個別啟用它。
本文提供如何使用 lakeflow
系統數據表監視帳戶中作業的參考。 這些數據表包含您帳戶中部署於相同雲端區域之所有工作區的記錄。 若要查看來自另一個區域的記錄,您需要從部署於該區域的工作區檢視數據表。
system.lakeflow
必須由帳戶管理員啟用。您可以使用 SystemSchemas API 加以啟用。
如需使用這些數據表進行作業成本和健康情況可檢視性的範例,請參閱 使用系統數據表監視作業成本。
可用的作業數據表
所有作業相關的系統數據表都存在於架構中 system.lakeflow
。 目前,架構會裝載四個數據表:
jobs
:追蹤作業的建立、刪除和基本資訊。job_tasks
:追蹤作業工作的建立、刪除和基本資訊。job_run_timeline
:記錄作業執行的開始、結束和結果狀態。job_task_run_timeline
:記錄作業工作的開始、結束和結果狀態。
作業數據表架構
數據表 jobs
是緩時變的維度數據表。 當數據列變更時,會發出新的數據列,以邏輯方式取代前一個數據列。
資料表路徑:此系統資料表位於 system.lakeflow.jobs
。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
account_id |
字串 | 此作業所屬帳戶的標識碼。 |
workspace_id |
字串 | 此作業所屬工作區的標識碼。 |
job_id |
字串 | 作業的標識碼。 此金鑰只在單一工作區內是唯一的。 |
name |
字串 | 使用者提供的工作名稱。 |
description |
字串 | 使用者提供的工作描述。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
creator_id |
字串 | 建立作業之主體的標識碼。 |
tags |
字串 | 與此作業相關聯的使用者提供的自定義標籤。 |
change_time |
timestamp | 上次修改作業的時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
delete_time |
timestamp | 使用者刪除作業的時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
run_as |
字串 | 用於作業執行之許可權的使用者或服務主體標識碼。 |
作業工作數據表架構
作業工作數據表是緩時變維度數據表。 當數據列變更時,會發出新的數據列,以邏輯方式取代前一個數據列。
資料表路徑:此系統資料表位於 system.lakeflow.job_tasks
。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
account_id |
字串 | 此作業所屬帳戶的標識碼。 |
workspace_id |
字串 | 此作業所屬工作區的標識碼。 |
job_id |
字串 | 作業的標識碼。 此金鑰只在單一工作區內是唯一的。 |
task_key |
字串 | 作業中工作的參考索引鍵。 此索引鍵在單一作業內是唯一的。 |
depends_on_keys |
陣列 | 此工作所有上游相依性的工作索引鍵。 |
change_time |
timestamp | 上次修改任務的時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
delete_time |
timestamp | 用戶刪除工作的時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
作業執行時程表數據表架構
作業執行時間軸數據表在產生時是不可變且完成的。
資料表路徑:此系統資料表位於 system.lakeflow.job_run_timeline
。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
account_id |
字串 | 此作業所屬帳戶的標識碼。 |
workspace_id |
字串 | 此作業所屬工作區的標識碼。 |
job_id |
字串 | 作業的標識碼。 此金鑰只在單一工作區內是唯一的。 |
run_id |
字串 | 作業執行的識別碼。 |
period_start_time |
timestamp | 執行或時間週期的開始時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
period_end_time |
timestamp | 執行或時間週期的結束時間。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
trigger_type |
字串 | 可以引發執行的觸發程序類型。 如需可能的值,請參閱 觸發類型值 |
run_type |
字串 | 作業執行的類型。 如需可能的值,請參閱 執行類型值。 |
run_name |
字串 | 隨此作業執行而提供的使用者執行名稱。 |
compute_ids |
陣列 | 數位,包含父作業執行的計算標識碼。 用於識別和 WORKFLOW_RUN 執行類型所使用的SUBMIT_RUN 叢集。 如需其他計算資訊,請參閱 job_task_run_timeline 數據表。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
result_state |
字串 | 作業執行的結果。 如需可能的值,請參閱 結果狀態值。 |
termination_code |
字串 | 作業執行的終止碼。 如需可能的值,請參閱 終止碼值。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
job_parameters |
map | 作業執行中使用的作業層級參數。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
觸發程式類型值
資料列的可能值為 trigger_type
:
CONTINUOUS
CRON
FILE_ARRIVAL
ONETIME
ONETIME_RETRY
執行類型值
資料列的可能值為 run_type
:
JOB_RUN
SUBMIT_RUN
:透過 POST /api/2.1/jobs/runs/submit 建立的一次性執行。WORKFLOW_RUN
:從筆記本工作流程起始的作業執行。
結果狀態值
資料列的可能值為 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
作業工作執行時程表數據表架構
作業工作執行時程表數據表在產生時是不可變且完成的。
資料表路徑:此系統資料表位於 system.lakeflow.job_task_run_timeline
。
資料行名稱 | 資料類型 | 描述 |
---|---|---|
account_id |
字串 | 此作業所屬帳戶的標識碼。 |
workspace_id |
字串 | 此作業所屬工作區的標識碼。 |
job_id |
字串 | 作業的標識碼。 此金鑰只在單一工作區內是唯一的。 |
run_id |
字串 | 工作執行的標識碼。 |
job_run_id |
字串 | 作業執行的識別碼。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
parent_run_id |
字串 | 父執行的標識碼。 在 2024 年 8 月下旬之前未填入所發出的數據列。 |
period_start_time |
timestamp | 任務的開始時間或時間週期。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
period_end_time |
timestamp | 任務的結束時間或時間週期。 時區資訊記錄在數值的末尾,其中 +00:00 代表 UTC。 |
task_key |
字串 | 作業中工作的參考索引鍵。 此索引鍵在單一作業內是唯一的。 |
compute_ids |
陣列 | 數位,包含作業工作所使用的計算標識碼。 |
result_state |
字串 | 作業工作執行的結果。 |
termination_code |
字串 | 工作執行的終止碼。 請參閱下表下方的可能值。 在 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 數據表的範例查詢。
- 取得最新版的作業
- 依工作區的每日作業計數
- 依工作區的每日作業狀態散發
- 運行時間最長的作業概觀
- 透過 runSubmit 執行之作業的作業運行時間(例如。空氣流)
- 作業執行分析
- 在所有用途計算上執行的作業
- 重試的作業執行
取得最新版的作業
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
依工作區的每日作業計數
此查詢會依工作區取得過去 7 天的每日作業計數:
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
依工作區的每日作業狀態散發
此查詢會依工作區傳回過去 7 天的每日作業計數,並依作業執行的結果散發。 查詢會移除作業處於擱置或執行中狀態的任何記錄。
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 個百分位數數據行會顯示作業最長執行的平均長度。
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 執行之作業的作業運行時間(例如。空氣流)
此查詢會根據 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;