
点击蓝字 关注我们
在使用 进行数据调度开发的过程中,参数的灵活运用是提升任务复用性、动态化执行逻辑的关键。无论是日常跑批任务中的日期处理,还是复杂工作流中的上下游传参,掌握参数的正确使用方式,能极大提高开发效率与任务健壮性。
本文基于海豚调度3.1.9版本将系统梳理 DolphinScheduler 中各类参数的使用方法,涵盖内置参数、衍生函数、日期计算、全局变量设置以及跨任务参数传递等核心场景,助你彻底掌握参数使用的“正确姿势”。
内置
参数
DolphinScheduler 提供了几个常用的系统级内置参数,主要用于获取调度实例的执行时间。这些参数无需定义,直接引用即可。


但是这种方式在SQL节点下 不适用,SQL下使用衍生内置函数会比较方便
衍生
内置参数
为解决 SQL 节点无法使用 ${} 参数的问题,DolphinScheduler 提供了强大的 $[...] 衍生函数语法,支持任意格式的日期拼接与运算,推荐在所有场景中优先使用。
我们定义这种基准参数为 $[...] 格式的,$[yyyyMMddHHmmss] 是可以任意分解组合的,比如:$[yyyyMMdd], $[HHmmss], $[yyyy-MM-dd] 等

结果如下:

结果如下

若需按月计算(考虑大小月、闰年),可使用 add_months() 函数

执行结果如下


执行结果如下

直接加减数字 在自定义格式后直接“+/-”数字
后 N 周:$[yyyyMMdd+7*N]
前 N 周:$[yyyyMMdd-7*N]
后 N 天:$[yyyyMMdd+N]
前 N 天:$[yyyyMMdd-N]
后 N 小时:$[HHmmss+N/24]
前 N 小时:$[HHmmss-N/24]
后 N 分钟:$[HHmmss+N/24/60]
前 N 分钟:$[HHmmss-N/24/60]

执行结果如下


执行结果如下:

TIPS :一般建议使用衍生内置函数,即$[] 的方式,比较直观且通用。
单个任务节点
中使用参数

TIPS: 不要在别名的地方使用自定义参数,会触发BUG
例如 下图,

工作流
全局参数
当多个任务需要使用相同的自定义变量(如环境标识、项目编号等),可通过工作流全局参数统一管理。
下面三个节点用一个参数
shell案例
echo ${my_param}
SQL案例
SELECT name
FROM test_datax_hive
WHERE
dt = DATE_FORMAT('$[yyyy-MM-dd-1]', 'yyyy-MM-dd')
and name = ${my_param}
python案例
print('${my_param}')
在每个节点的地方不需要设置参数,只需要在工作流保存的时候设置参数即可。如下图。

工作流
参数传递
DolphinScheduler 支持在任务之间传递运行时生成的参数,适用于“上游查询结果 → 下游处理”的场景。
只有SQL和SHELL任务可以往下传递参数。
SQL SHELL PYTHON可以接受上一个节点传递的参数。
下面通过案例来演示实际操作。
在工作流中新建一个SQL节点。如下图。

然后建SHELL类型任务,如下图

参数名保持相同,依旧是OUT类型。
再建一个PYTHON类型任务。如下图

参数名保持相同。
最后,把工作流连起来,如下图

最后看运行日志,来验证
SQL执行结果

SHELL 运行结果,参数被成功赋值

PYTHON运行结果,参数被成功赋值
创建shell脚本,参数名要一致。

${setValue(key=value)} 的语句,key 为对应参数的 prop,value 为该参数的值。
在SQL节点接收参数

参数名保持一致
PYTHON任务中接收参数

执行结果



参数使用
总结
IN 表示局部参数仅能在当前节点使用
OUT 表示局部参数可以向下游传递。
参数优先级:DolphinScheduler 参数的优先级从高到低为:本地参数 > 上游任务传递的参数 > 全局参数



用户案例

迁移实战

发版消息

加入社区
关注社区的方式有很多:
同样地,参与Apache DolphinScheduler 有非常多的参与贡献的方式,主要分为代码方式和非代码方式两种。
非代码方式包括:
完善文档、翻译文档;翻译技术性、实践性文章;投稿实践性、原理性文章;成为布道师;社区管理、答疑;会议分享;测试反馈;用户反馈等。
代码方式包括:
查找Bug;编写修复代码;开发新功能;提交代码贡献;参与代码审查等。


你的好友秀秀子拍了拍你
并请你帮她点一下“分享”
