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: "{{pipeline.vars.data_count}}"
      op: GREATER_THAN
      right: '0'
    position:
      x: 200
      y: 100

  # true 分支:数据存在,执行处理
  - name: process_data
    type: jar
      source: TOS
      path: tos://dorado/spark-examples_2.12-3.0.1.jar
      engineType: emr_serverless_spark
      engineQueue: 公共队列-Default
      arguments: []
      mainClass: org.apache.spark.examples.JavaSparkPi
      extraResources: []
      position:
        x: 680
        'y': 980
      dependsOn:
        activities:
          - name: check_data_ready
      engineCluster: serverless_spark_default
      sparkConf:
        - key: serverless.spark.access.key
          value: '{{ak}}'
        - key: serverless.spark.secret.key
          value: '{{sk}}'

  # false 分支:数据为空,发送告警
  - name: send_empty_alert
    type: notebook
    source: WORKSPACE
    path: /Workspace/Users/zhang3/notebooks/alert.ipynb
    computingResourceGroupName: 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

等于

"2" == "2" → true
"a" == "a" → true

NOT_EQUAL

不等于

"2" != "3" → true
"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

INCLUDE

包含

"hello world" include "world" → true

NOT_INCLUDE

不包含

"hello world" not include "xyz" → true

IS_EMPTY

为空

"" is empty → true
null is empty → true

NOT_EMPTY

不为空

"abc" not empty → true
"0" not empty → 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

未命中分支的行为

当 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: "{{pipeline.vars.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

使用建议

建议

说明

条件值来自变量

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

两分支都配置

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

注意类型比较

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

最近更新时间:2026.07.17 14:39:19
这个页面对您有帮助吗?
有用
有用
无用
无用