作业系统表参考

Note

lakeflow 架构以前称为 workflow。 这两个架构的内容完全相同。

本文是 lakeflow 系统表的参考,这些系统表记录帐户中的作业活动。 这些表包括部署在同一云区域中的帐户中所有工作区的记录。 若要查看另一个区域中的记录,必须查看该区域中部署的工作区中的表。

Requirements

  • 若要访问这些系统表,用户必须:

可用的作业表

所有与作业相关的系统表都位于架构中 system.lakeflow 。 目前,该架构托管四个表:

Table Description 支持流式处理 免费保留期 包括全局或区域数据
作业 (公共预览版) 跟踪在帐户中创建的所有作业 Yes 365 天 Regional
job_tasks (公共预览版) 跟踪帐户中运行的所有作业任务 Yes 365 天 Regional
job_run_timeline (公共预览版) 跟踪作业运行和相关元数据 Yes 365 天 Regional
job_task_run_timeline (公共预览版) 跟踪作业任务运行和相关元数据 Yes 365 天 Regional
管道 (公共预览版) 跟踪在帐户中创建的所有管道 Yes 365 天 Regional
pipeline_update_timeline (公共预览版) 跟踪管道更新和相关元数据 Yes 365 天 Regional

详细架构参考

以下各节为每个与作业相关的系统表提供架构引用。

作业表架构

jobs 表是渐变维度表(SCD2)。 当行发生更改时,系统会发出新行,以逻辑方式替换上一行。

表路径system.lakeflow.jobs

列名称 数据类型 Description Notes
account_id 字符串 此作业所属帐户的 ID
workspace_id 字符串 此作业所属工作区的 ID
job_id 字符串 作业 ID 仅在单个工作区中唯一
name 字符串 作业名称由用户提供
description 字符串 用户提供的作业说明 如果已配置 客户管理的密钥 ,则此字段为空。
creator_id 字符串 创建作业的主体的 ID
tags 映射 与此作业关联的用户提供的自定义标记
change_time 时间戳 上次修改作业的时间 记录为 +00:00(UTC) 的时区
delete_time 时间戳 用户删除任务的时间 记录为 +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 时间戳 创建此任务的时间。 时区记录为 +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 仅在单个工作区中唯一
task_key 字符串 作业中任务的引用键 仅在单个作业中唯一
depends_on_keys 数组 此任务的所有上游依赖项的任务键
change_time 时间戳 上次修改任务的时间 记录为 +00:00(UTC) 的时区
delete_time 时间戳 用户删除任务的时间 记录为 +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 此密钥仅在单个工作区中是唯一的
run_id 字符串 作业运行的 ID
period_start_time 时间戳 运行或时间段的开始时间 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
period_end_time 时间戳 运行或时间段的结束时间 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
trigger_type 字符串 可以触发运行的触发器类型 有关可能的值,请参阅触发器类型值
run_type 字符串 作业运行的类型 有关可能的值,请参阅运行类型值
run_name 字符串 与此次任务运行关联的用户提供的运行名称
compute_ids 数组 包含父作业运行的作业计算 ID 的数组 用于标识 WORKFLOW_RUN 运行类型使用的作业群集。 有关其他计算信息,请参阅 job_task_run_timeline 表。
result_state 字符串 作业运行的结果 对于运行超过一小时并被拆分为多行的情况,此列仅在表示运行结束的行中填充。 有关可能的值,请参阅 结果状态值
termination_code 字符串 作业运行的终止代码 对于运行超过一小时并被拆分为多行的情况,此列仅在表示运行结束的行中填充。 有关可能的值,请参阅终止代码值
job_parameters 映射 作业运行中使用的作业级别参数 仅包含job_parameters中的值。 不包括已弃用的参数字段(notebook_paramspython_paramspython_named_paramsspark_submit_paramssql_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 仅在单个工作区中唯一
run_id 字符串 任务运行的 ID
job_run_id 字符串 作业运行的 ID
parent_run_id 字符串 父运行的 ID
period_start_time 时间戳 任务的开始时间或时间段 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
period_end_time 时间戳 任务的结束时间或时间段 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
task_key 字符串 作业中任务的引用键 此密钥仅在单个作业中是唯一的
compute_ids 数组 compute_ids数组包含作业任务使用的作业群集、交互式群集和 SQL 仓库的 ID
result_state 字符串 工作任务执行的结果 对于运行时间超过一小时且拆分成多行的任务,此列仅在任务结束处所在的行中填充。 有关可能的值,请参阅 结果状态值
termination_code 字符串 任务运行的终止代码 对于运行时间超过一小时且拆分成多行的任务,此列仅在任务结束处所在的行中填充。 有关可能的值,请参阅终止代码值
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 月上旬之前发出的行未填充

管道表架构

管道表是一个渐变维度表(SCD2)。 当行发生更改时,系统会发出新行,以逻辑方式替换上一行。

表路径system.lakeflow.pipelines

列名称 数据类型 Description Notes
account_id 字符串 此管道所属的帐户的 ID
workspace_id 字符串 此管道所属的工作区的 ID
pipeline_id 字符串 管道的 ID 仅在单个工作区中唯一
pipeline_type 字符串 管道的类型 有关可能的值,请参阅 管道类型值
name 字符串 管道的用户提供名称
created_by 字符串 用户的电子邮件或创建管道的服务主体的 ID
run_as 字符串 用户的电子邮件或其权限用于管道运行的服务主体的 ID
tags 映射 与此作业关联的用户提供的自定义标记
settings 结构 管道的设置 请参阅 管道设置
configuration 映射 用户提供的管道配置
change_time 时间戳 上次修改管道的时间 记录为 +00:00(UTC) 的时区
delete_time 时间戳 用户删除管道的时间 记录为 +00:00(UTC) 的时区
create_time 时间戳 用户创建管道的时间。 时区记录为 +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 仅在单个工作区中唯一
update_id 字符串 管道更新的 ID 仅在单个工作区中唯一
update_type 字符串 管道更新的类型 有关可能的值,请参阅 管道更新类型值
request_id 字符串 请求的 ID。 帮助了解必须重试/重启更新的次数
run_as_user_name 字符串 用于管道更新权限的用户电子邮件或服务主体 ID
trigger_type 字符串 触发此更新的内容 有关可能的值,请参阅 管道触发器类型值
trigger_details 结构 管道触发器的详细信息 有关可能的值,请参阅 管道触发器类型详细信息
result_state 字符串 管道更新的结果 对于跨多个行拆分的超过 1 小时运行的更新,此列仅在表示更新结束的行中填充。 有关可能的值,请参阅 管道结果参考
compute 结构 有关管道更新中使用的计算资源的详细信息
period_start_time 时间戳 管道更新开始时间或小时开始时间。 该值存储为 UTC 时间戳。 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
period_end_time 时间戳 管道线更新结束时间或小时末。 该值存储为 UTC 时间戳。 时区信息记录在值的末尾,其中 +00:00 表示 UTC。 有关 Databricks 如何将长时间运行切分为每小时间隔的详细信息,请参阅时间线切片逻辑
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)

联接作业运行时间线和使用情况表

使用作业运行元数据扩充每个计费日志

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 系统表联接,以计算每个作业运行的成本。

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 系统表联接,以返回最近基于通用计算(而不是作业计算)运行的作业。

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.jobslakeflow.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

作业监视仪表板

以下仪表板使用系统表来帮助您开始监控作业和运行状况。 它包括常见用例,例如作业性能跟踪、故障监视和资源利用率。

Lakeflow 可观测性仪表板

Lakeflow 可观测性仪表板作业概述

有关下载仪表板的信息,请参阅使用系统表监视作业成本和性能

Troubleshooting

作业未记录在 lakeflow.jobs 表中

如果任务在系统表中不可见:

  • 在过去的 365 天内,该职位未被修改
    • 修改模式中的任何作业字段以生成新记录。
  • 作业是在不同区域创建的
  • 最近创建的作业(表延迟)

找不到 job_run_timeline 表中的作业

并非所有作业运行在任何地方都可见。 虽然 JOB_RUN 条目出现在所有与作业相关的表中,但 WORKFLOW_RUN(笔记本工作流运行)仅记录在 job_run_timeline 中,SUBMIT_RUN(一次性提交的运行)仅记录在这两个时间线表中。 这些运行不会填充到其他作业系统表,例如 jobsjob_tasks

有关每种运行类型可见和可访问的详细细分,请参阅下面的 “运行类型 ”表。

作业运行在 billing.usage 表中不可见

system.billing.usage 中,仅针对在作业计算或无服务器计算上运行的作业填充 usage_metadata.job_id

此外,WORKFLOW_RUN 作业在 usage_metadata.job_id 中没有自己的 usage_metadata.job_run_idsystem.billing.usage 属性。 这些计算的使用量将归因于触发它们的父笔记本。 这意味着,当笔记本启动一个工作流时,所有计算成本都记录在父笔记本的使用情况中,而不是作为单独工作流任务。

有关详细信息,请参阅 使用情况元数据参考

计算基于通用计算运行的作业的成本

无法以 100% 的准确率对基于用途计算运行的作业进行精确的成本计算。 当作业在交互式(用途)计算上运行时,多个工作负荷(如笔记本、SQL 查询或其他作业)通常会在同一计算资源上同时运行。 由于群集资源是共享的,因此计算成本和单个作业运行之间没有直接的 1:1 映射。

为了准确跟踪作业成本,Databricks 建议在专用作业计算或无服务器计算上运行作业,其中 usage_metadata.job_idusage_metadata.job_run_id 允许精确的成本归因。

如果必须使用全用途计算,可以:

  • 根据 system.billing.usage 监视 usage_metadata.cluster_id 中的总体群集使用情况和成本。
  • 单独跟踪作业运行时指标。
  • 请考虑由于共享资源,任何成本估算都将是近似值。

有关成本归因的详细信息,请参阅 使用情况元数据参考

引用值

以下部分包括有关作业相关表中选择列的引用。

时间线表中的切片逻辑

period_start_timeperiod_end_time 表中的 job_run_timelinejob_task_run_timeline 列记录作业运行或任务运行的活动期限。

每行最多记录一个小时的运行时。 持续时间超过 1 小时的运行记录在多个行上。 此切片可确保监视长时间运行的作业时的每小时精细度。

Note

如果一个运行从未开始执行,它由一行表示,其中 period_start_time 等于 period_end_time。 这表示没有活动运行时。 若要了解运行为何未启动,请检查 termination_code 列。

运行时间较短的作业

对于短于 1 小时的运行,将发出单个行,并 period_start_time 设置为运行开始时间并 period_end_time 设置为运行结束时间。

例如,作业从 UTC 下午 12:13 开始,以 12:45 UTC 结束,由单个行表示:

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的行,每行最多表示最长一小时的运行时长。

  • 第一行从运行的实际开始时间开始,在第一个运行小时结束时结束。
  • 中间行(如果有的话)跨越整个小时窗口,与前一个切片 period_end_time 对齐。
  • 最后一行从上一个切片的开头开始,到运行的实际结束时间结束。

例如,一个从 UTC 下午 4:47 运行到 UTC 晚上 8:28 的作业被切成多行。 每行表示一小时的活动,最后一行除外,可能较短:

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

触发器类型值

job_run_timeline 表中,trigger_type 列的可能值为:

  • CONTINUOUS
  • CRON
  • FILE_ARRIVAL
  • ONETIME
  • ONETIME_RETRY

运行类型值

job_run_timeline 表中,run_type 列的可能值为:

类型 Description UI 位置 API 终结点 系统表
JOB_RUN 标准作业执行 作业和作业运行 UI /jobs 和 /jobs/runs 终结点 jobs、job_tasks、job_run_timeline、job_task_run_timeline
SUBMIT_RUN 通过 POST /jobs/runs/submit 进行一次性运行 仅限作业运行 UI 仅限 /jobs/runs 终结点 job_run_timeline,job_task_run_timeline
WORKFLOW_RUN 笔记本工作流启动的运行 不可见 不可访问 job_run_timeline

结果状态值

job_task_run_timelinejob_run_timeline表中,result_state列的可能值为:

State Description
SUCCEEDED 运行成功完成。
FAILED 运行完成时出现错误。
SKIPPED 因为不满足条件,所以从未执行运行。
CANCELLED 应用户要求取消了运行。
TIMED_OUT 该运行在达到超时后已停止。
ERROR 运行完成时出现错误。
BLOCKED 运行被上游依赖项阻止。
NULL 该行表示长时间运行的作业的中间切片。 result_state 仅在代表运行结束的行中可用。

终止代码值

job_task_run_timelinejob_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 列的可能值为:

  • COMPLETED
  • FAILED
  • CANCELED

管道设置参考

pipelines 表中,settings 列的可能值为:

Value Description
photon 指示是否使用 Photon 运行管道的标志
development 用于指示管道是在开发模式还是生产模式下运行的标志
continuous 一个指示是否连续运行管道的标志
serverless 指示是否在无服务器集群上运行管道的标记
edition 用于运行管道的产品版本
channel 要使用的管道运行时的版本

管道更新类型值

pipeline_update_timeline 表中,update_type 列的可能值为:

  • API_CALL
  • RETRY_ON_FAILURE
  • SERVICE_UPGRADE
  • SCHEMA_CHANGE
  • JOB_TASK
  • USER_ACTION
  • DBSQL_REQUEST
  • SETTINGS_CHANGE
  • SCHEMA_EXPLORATION
  • INFRASTRUCTURE_MAINTENANCE
  • START_RESOURCES

管道触发器类型值

pipeline_update_timeline 表中,trigger_type 列的可能值为:

Value Description
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_OPTIMIZEDSTANDARD