You need to enable JavaScript to run this app.
文档中心
大数据研发治理套件

大数据研发治理套件

复制全文
下载 pdf
Activity (任务节点)类型
If/Else
复制全文
下载 pdf
If/Else

本文介绍 If/Else 类型的 Activity 配置,用于在 Pipeline 中实现条件分支逻辑。

概述

If/Else Activity(YAML 类型标识为 if_condition)根据条件判断结果执行不同的下游分支。条件为 true 时走 true 分支,条件为 false 时走 false 分支。
适用场景:

  • 根据数据量是否为空决定是否执行后续处理。
  • 根据环境变量切换不同的处理逻辑。
  • 根据前序节点的执行结果选择不同路径。

配置示例

activities:
  - name: check_data_ready
    type: if_condition
    condition:
      left: "{{variables.data_count}}"
      op: GREATER_THAN
      right: "0"
    position:
      x: "200"
      y: "100"

  # true 分支:数据存在,执行处理
  - name: process_data
    type: sql
    source: WORKSPACE
    path: /Workspace/Users/zhang3/sql/process.sql
    engineType: emr_serverless_spark
    engineQueue: default
    dependsOn:
      activities:
        - name: check_data_ready
          outcome: true
    position:
      x: "400"
      y: "50"

  # false 分支:数据为空,发送告警
  - name: send_empty_alert
    type: notebook
    source: WORKSPACE
    path: /Workspace/Users/zhang3/notebooks/alert.notebook
    generalComputingResourceGroupName: default_py_group
    dependsOn:
      activities:
        - name: check_data_ready
          outcome: false
    position:
      x: "400"
      y: "200"

字段说明

字段

类型

必填

说明

type

String

固定为 if_condition

condition

Object

条件表达式

condition.left

String

左值(支持参数/变量引用)

condition.op

Enum

比较运算符

condition.right

String

右值(支持参数/变量引用)

比较运算符

op 值

含义

示例

EQUAL_TO

等于

"a" == "a" → true

NOT_EQUAL

不等于

"a" != "b" → true

GREATER_THAN

大于

"10" > "5" → true

GREATER_THAN_OR_EQUAL

大于等于

"10" >= "10" → true

LESS_THAN

小于

"3" < "5" → true

LESS_THAN_OR_EQUAL

小于等于

"3" <= "5" → true

注意

比较时两侧值均为字符串类型。如果值可解析为数字,则按数字比较;否则按字符串字典序比较。

下游分支绑定

下游 Activity 通过 dependsOn.activities[].outcome 字段指定所属分支:

outcome 值

含义

true

条件成立时执行。

false

条件不成立时执行。

不指定

无论条件结果如何,上游执行完成后均执行。

# true 分支
dependsOn:
  activities:
    - name: check_data_ready
      outcome: true

# false 分支
dependsOn:
  activities:
    - name: check_data_ready
      outcome: false

# 无条件(两个分支都完成后执行)
dependsOn:
  activities:
    - name: check_data_ready

未命中分支的行为

当 If/Else 条件判断完成后,未被选中分支上的 Activity 状态标记为 SKIPPED(跳过),不会实际执行。

多级嵌套

If/Else 支持嵌套使用,实现多级条件判断:

activities:
  - name: check_region
    type: if_condition
    condition:
      left: "{{pipeline.parameters.region}}"
      op: EQUAL_TO
      right: "cn"

  - name: check_cn_level
    type: if_condition
    condition:
      left: "{{variables.data_level}}"
      op: EQUAL_TO
      right: "vip"
    dependsOn:
      activities:
        - name: check_region
          outcome: true

  - name: process_cn_vip
    type: sql
    # ...
    dependsOn:
      activities:
        - name: check_cn_level
          outcome: true

  - name: process_cn_normal
    type: sql
    # ...
    dependsOn:
      activities:
        - name: check_cn_level
          outcome: false

  - name: process_overseas
    type: sql
    # ...
    dependsOn:
      activities:
        - name: check_region
          outcome: false

使用建议

建议

说明

条件值来自变量

使用 {{variables.xxx}} 引用前序节点的输出作为判断依据。

避免深层嵌套

超过 3 层嵌套会降低可读性,考虑拆分为多个 Pipeline。

两分支都配置

建议 true 和 false 分支都有对应处理(至少做日志记录),避免静默跳过。

注意类型比较

左右值均为字符串,数值比较时确保值可正确解析为数字。

最近更新时间:2026.06.12 11:44:17
这个页面对您有帮助吗?
有用
有用
无用
无用