分享方式:


作業系統數據表參考

重要

此系統資料表處於公開預覽狀態。 若要存取資料表,必須在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

結果狀態值

資料列的可能值為 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 數據表的範例查詢。

取得最新版的作業

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_idjob_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;