目标:根据日期判断执行哪项子任务

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_参数传递

调度器版本:3.2.0

在这个版本中官方支持的参数传递任务类型有6中,分别为shell,sql,procedure,python,subprocess,kubernetes。

失败样例

Switch任务是根据全局变量的值进行判断的,无法直接使用上游传递的参数,同时,如果使用任务的全局参数(dt=$[dd])做传递,参数传递成功,但是判断语句取用的是“$[dd]”,无法做到判断,样例如下:

Switch任务的语句判断:

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_海豚调度_02

任务全局参数设置

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_03

执行日志:

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_04

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_05

可以看到全局参数的传递获取到了当前日期,但之后任务判断语句的传递中成功,这个不清楚原因,猜测可能是语法问题。

成功样例

借助Shell和SubProcess完成日期参数的传递。使用shell获取日期,并设置传递参数到下游SubProcess任务中,将判断任务单独创建一个工作流,把判断工作流放在SubProcess任务中,这样完成了日期参数的传递及判断。

1、创建判断任务的工作流

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_海豚调度_06

设置判断条件

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_dolphinscheduler_07

2、创建获取日期的Shell任务,设置传递参数

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_08

3、创建SubProcess任务,将日期判断任务添加到子任务中

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_海豚调度_09

4、执行日志

Shell任务获取日期成功

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_海豚调度_10

SubProcess任务获取到上游Shell任务传递的日期参数(dt=29),并传递给子任务

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_11

子任务中判断节点获取到dt参数值

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_Switch_12

判断部分读取dt参数

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_dolphinscheduler_13

判断成功,执行符合条件的下游节点任务

dolphinscheduler3.2.0版本参数传递并使用switch任务进行判断_参数传递_14