Lakeflow 作业中禁用的任务

Azure Databricks Lakeflow 作业中已禁用的任务在运行时会被跳过,而不会从该作业中移除。 禁用的任务保留其配置和运行历史记录,以便以后无需重新生成任务即可重新启用它们。 本页介绍作业运行时被禁用任务的行为方式,包括它们对下游任务的影响、修复过程以及部分运行的影响。

下游任务行为

当一个作业运行时,Lakeflow作业会根据每个下游任务的运行条件评估其上游任务,以决定是否运行、跳过或禁用该任务。 已禁用的任务以 Disabled 终止代码完成。

如果由于一个或多个父任务被禁用而无法满足下游任务的“运行条件”,那么 Lakeflow Jobs 也会将该次运行中的下游任务标记为禁用。 禁用的下游任务在定向无环图(DAG)视图的右上角显示一个关闭的大型圆形图标,因此可以在启动运行之前看到影响。

下表汇总了当上游任务被禁用时每个 运行条件 的下游行为。 有关 运行如果 选项的完整列表,请参阅 配置任务依赖项

运行 if 条件 禁用父任务时的下游任务行为 Example
全部成功 (默认值) 下游任务不运行。 被禁用的父任务不满足 succeeded 要求。 A (disabled) → BB 不运行。
至少有一个成功 如果至少有一个其他父任务成功,那么下游任务将运行。 如果所有其他父任务都失败或已禁用,则下游任务不会运行。 A (disabled)C (succeeded) → BB 运行。
无失败 只要至少有一个父任务成功完成,下游任务就会运行。 如果禁用了所有父任务,则下游任务不会运行。 A (disabled)C (skipped) → B:由于没有父任务失败,B 就运行了。
全部完成 下游任务正常运行。 禁用的父任务被视为已完成。 A (disabled) → BB 运行。
至少一个失败 如果至少有一个其他父任务失败,则下游任务将运行。 禁用的父任务不会被视为失败。 如果没有其他父任务失败,则下游任务不会运行。 A (disabled)C (failed) → BB 运行。
全部失败 下游任务不运行。 禁用的父任务不会被视为失败。 A (disabled) → BB 不运行。

Note

只有显式禁用的任务在作业定义中含有 disabled: true。 Lakeflow 作业在运行创建时确定下游禁用状态,并不会将其保留在作业设置中。

禁用任务

若要使用 UI 禁用或重新启用任务,请参阅 “禁用任务”。

若要通过 API 或捆绑包禁用任务,请执行以下操作:

使用 disabled: true、Azure Databricks CLI、Azure Databricks SDK 或 声明性自动化捆绑包在作业设置中设置任务:

{
  "tasks": [
    {
      "task_key": "load_raw_data",
      "disabled": true,
      "notebook_task": {
        "notebook_path": "/Shared/etl/load_raw_data"
      }
    }
  ]
}

响应jobs/getjobs/list仅针对显式禁用的任务返回disabled: true。 在运行期间动态禁用的任务不会反映在存储的作业设置中。

修复和部分运行中的禁用任务

禁用任务在修复运行和部分运行中的表现不同于典型的计划运行:

  • 维修: Lakeflow 作业使用每个任务的运行状态来确定要修复的内容,而不是任务的禁用状态。 若要强制禁用的任务作为修复的一部分运行,请在rerun_tasks中包含它。 请参阅重新运行失败的和跳过的任务
  • 部分运行: 在开始部分运行时,默认情况下不会选择禁用的任务,但你可以选择它们以运行一次,而无需在作业设置中重新启用它们。 Lakeflow 作业仅运行您选择的任务,并且在部分运行期间不会应用“运行条件”传播。

局限性

禁用的任务具有以下限制:

  • 如果禁用提供其条件值的上游任务,则 If/else condition 任务将失败。
  • 如果禁用提供其输入值的上游任务,则 For each 任务将失败。
  • 只有用户禁用的任务显示在 disabled: true 作业定义中。 若要查看在运行作业之前受影响的下游任务,请使用作业 UI 中的 DAG 视图。