本文介绍 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
字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| String | 是 | 固定为 |
| Object | 是 | 条件表达式 |
| String | 是 | 左值(支持参数/变量引用) |
| Enum | 是 | 比较运算符 |
| String | 是 | 右值(支持参数/变量引用) |
op 值 | 含义 | 示例 |
|---|---|---|
| 等于 |
|
| 不等于 |
|
| 大于 |
|
| 大于等于 |
|
| 小于 |
|
| 小于等于 |
|
| 包含 |
|
| 不包含 |
|
| 为空 |
|
| 不为空 |
|
注意
比较时两侧值均为字符串类型。如果值可解析为数字,则按数字比较;否则按字符串字典序比较。
下游 Activity 通过 dependsOn.activities[].outcome 字段指定所属分支:
outcome 值 | 含义 |
|---|---|
| 条件成立时执行。 |
| 条件不成立时执行。 |
# 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
建议 | 说明 |
|---|---|
条件值来自变量 | 使用 |
两分支都配置 | 建议 true 和 false 分支都有对应处理(至少做日志记录),避免静默跳过。 |
注意类型比较 | 左右值均为字符串,数值比较时确保值可正确解析为数字。 |