参数配置
概述
为使任务自动周期运行时能动态适配环境变化,离线开发提供了参数配置的功能,参数的应用场景十分广泛,例如同步任务中将增量数据写入Hive表的天分区,需要在分区填写栏支持系统变量。SQL任务中,需要将每天的数据写入新的分区,也需要引用变量。
参数配置可分为「系统参数」和「自定义参数」2大类,系统参数是内置的,用户可在各任务类型中直接引用,当系统参数的格式或处理方式无法满足要求时,离线开发支持自定义参数,下面详细描述:
系统参数
参数名称
离线开发自带如下几个系统参数:
${bdp.system.bizdate} --业务日期,业务日期默认为计划运行日期的前一天,格式:yyyyMMdd
${bdp.system.bizdate2} --业务日期,格式:yyyy-MM-dd
${bdp.system.cyctime} --计划时间,格式:yyyyMMddHHmmss
${bdp.system.premonth} --上个月(以计划时间为基准),格式:yyyyMM
${bdp.system.currmonth} --当前月(以计划时间为基准),格式:yyyyMM
${bdp.system.runtime} --当前时间,即任务实际运行的时间,格式:yyyyMMddHHmmss
定时运行时间,不是任务实际开始运行的时间,若设置了每天02:00开始运行,但此时系统资源不足,则任务会延迟执行,假设任务在02:12开始实际运行,但上述几个参数的取值基准依然为02:00 |
设置方式
在调度系统中运行时,无须在编辑框设置,可直接在代码中引用,如下图所示:

入门示例
假设存在一张分区表,以ds作为分区字段,有数据同步任务每天向这张表的一个新的分区写入数据,其分区名由业务日期命名,例如20180412。现需要每天对此表的数据做处理,但只需要处理 当前日期为2018年4月13日,查询此表在20180412分区的数据的SQL为:
select * from big_table2 where ds=${bdp.system.bizdate};
此任务运行的日期为2018年4月13日,系统在运行时会将系统参数替换,实际执行的SQL为:
select * from big_table2 where ds=20180412;
自定义参数
简述
在代码中引用 ${key1}
、${key2}
, 然后在「任务参数->自定义参数配置」编辑框设置key1=value1
、key2=value2
,如下图所示:

其中,value1和value2是2个常量字符串,通过在右侧面板设置参数值,任务运行时可进行参数替换,这是常量参数。
在「任务参数->自定义参数配置」中,按照一定的规则填写,可基于时间进行取值,这就是变量参数,如下图所示:

假设今天为2020年5月31日,在右侧面板设置参数值为 $[yyyyMMdd]
,在任务运行时,+${key1}+
参数即可被替换为20200531,这是自定义参数的基本用法。
基于时间的自定义参数,涉及以下几个问题:
时间基准线
在对自定义参数进行增减之前,需明确取值的时间基准,离线开发支持3种基准线,在右侧的参数面板中分别使用$[] 、${}、 $()
3种不同的括号,区分3种时间基准,下面举例说明:
实例的业务日期:2020-05-29 实例的计划运行时间:2020-05-30 12:10:00 实例的实际运行时间:2020-05-30 12:13:31
基准线 |
引用方式 |
举例 |
|
右侧面板输入 |
参数替换结果 |
||
计划时间 |
$[] |
$[yyyy-MM-dd HH:mm:ss] |
2020-05-30 12:10:00 |
业务日期 |
${} |
${yyyy-MM-dd} |
2020-05-29 |
运行时间 |
$() |
$(yyyy-MM-dd HH:mm:ss) |
2020-05-30 12:13:31 |
如下图所示:

时间增减
基于计划时间取值的时间增减如下,基于业务日期、运行时间的时间增减方式类似,不再列出
-
后N年:$[add_months(yyyyMMdd,12*N)],输出yyyyMMdd
-
前N年:$[add_months(yyyyMMdd,-12*N)],输出yyyyMMdd
-
后N月:$[add_months(yyyyMMdd,N)],输出yyyyMMdd
-
前N月:$[add_months(yyyyMMdd,-N)],输出yyyyMMdd
-
后N周:$[yyyyMMdd+7*N],输出yyyyMMdd
-
前N周:$[yyyyMMdd-7*N],输出yyyyMMdd
-
后N天:$[yyyyMMdd+N],输出yyyyMMdd
-
前N天:$[yyyyMMdd-N],输出yyyyMMdd
-
后N小时:$[hh24miss+N/24],输出yyyyMMddHHmmss
-
前N小时:$[hh24miss-N/24],输出yyyyMMddHHmmss
-
后N分钟:$[hh24miss+N/24/60],输出yyyyMMddHHmmss
-
前N分钟:$[hh24miss-N/24/60],输出yyyyMMddHHmmss
将上述基于计划时间取值的时间增减方式,[] 修改为 {} 或者 () ,可实现基于业务日期或运行时间进行增减 |
format函数
系统参数结合时间增减,可满足绝大多数场景的参数需求,但一些特殊场景中,需要定义一些特定的输出格式(例如输出MM-dd)、时间增减等信息,此时可使用format函数来支持。
format函数的使用方法:
$[format(yyyyMMddHHmmss+Nunit,'formatString')]
-
$[]可替换为${}和$(),修改时间基准为业务日期和任务实际运行时间
-
+Nunit,是在做时间增减
-
+表示增加,-表示减少
-
N表示数量,正整数
-
unit表示单位,支持y/M/d/H/m/s/w,分别为:年/月/日/时/分/秒/周,N和unit之间无需字符连接
-
-
formatString为输出格式,分为3类
-
普通yyyyMMdd等字符:需符合 Joda-Time标准
-
UnixTimestamp13、UnixTimestamp10:分别输出Unix13位/10位时间戳格式
-
ISODate:输出ISODate格式,例如
2020-06-07T16:11:30Z
-
-
使用举例:
-
业务日期减1天,输出MM-dd格式:
${format(yyyyMMddHHmmss-1d,'MM-dd')}
-
业务日期减3天,输出MMdd yyyy格式:
${format(yyyyMMddHHmmss-3d,'MMdd yyyy')}
-
计划时间3周后,输出Unix10位时间戳:
$[format(yyyyMMddHHmmss+3w,'UnixTimestamp10')]
-
format函数的各部分均区分大小写 |