在作业中通过 If/else 任务添加分支逻辑

使用 If/else condition 任务向任务图添加布尔条件逻辑。 这些任务由布尔运算符和一对操作数组成,其中操作数可以使用配置的或动态参数或任务值来引用作业或任务状态。 请参阅参数化作业

例如,假设你有一个名为 process_records 的任务,该任务在名为 bad_records 的值中维护无效记录的计数,并且你希望在遇到无效记录时进行分支处理。 要将此逻辑添加到工作流,可以使用表达式(例如 If/else condition)创建 {{tasks.process_records.values.bad_records}} > 0 任务。 然后,可以根据条件的结果添加依赖任务。

完成包含 If/else condition 任务的作业运行后,可以在 UI 中查看作业运行的详细信息,包括结果和表达式评估的详细信息。 请参阅查看作业运行详细信息

注释

  • 数字和非数字值的处理方式不同,具体取决于布尔运算符:
    • ==!= 运算符可对其操作数执行字符串比较。 例如,12.0 == 12 结果为 false。
    • >>=<<= 运算符对其操作数进行数值比较。 例如,12.0 >= 12 计算结果为 true,10.0 >= 12 则计算为 false。
    • 在引用操作数中的任务值时,仅允许使用数值、字符串和布尔值。 任何其他类型都会导致条件表达式失败。 非数值类型将会序列化为字符串,并被视为 If/else condition 表达式中的字符串。 例如,如果任务值设置为布尔值,则会将其序列化为 "true""false"

配置 If/else 任务

在作业 UI 的任务选项卡中添加任务,方法是执行以下操作:

  1. 单击 “加号”图标。添加任务

  2. “任务名称 ”字段中输入名称。

  3. 在“类型”下拉菜单中,选择“If/else condition”。

  4. 在第一个“条件”文本框中,输入要评估的操作数。 操作数可以引用以下任何一项:

    • 例如, {{job.parameters.<name>}}作业参数变量。
    • 任务参数变量。
    • 任务值,例如 {{tasks.<task_name>.values.<value_name>}}
  5. 从下拉菜单中选择布尔运算符。

  6. 在第二个“条件”文本框中,输入用于计算条件的值。

  7. (可选)若要配置重试、运行持续时间或流式积压工作阈值或通知,请参阅 “高级任务设置”。

  8. 单击“保存任务”。

若要编辑、克隆、禁用或删除此任务,请参阅 Lakeflow 作业中的配置和编辑任务

配置 If/else 条件语句中的依赖项

通过执行以下操作,从“任务”If/else condition选项卡中的任务图配置 任务的依赖项:

  1. 选择 If/else condition 任务图中的任务,然后单击 “加号”图标。添加任务

  2. 输入任务的详细信息。 “依赖于”字段默认为 <task-name> (true),其中 <task-name>If/else condition 任务的名称。

    • 选择 <task-name> (false) 以配置在条件评估结果为 false 时运行的任务。

可以根据 If/else condition 的结果将多个任务配置为以串行或并行方式运行。 如果需要在上游任务失败时进行条件化运行,可考虑配置 Run if dependencies。 请参阅配置任务依赖项

注释

如果禁用提供其条件值的上游任务,则 If/else condition 任务将失败。 请参阅限制