参数配置用于定义代码中的参数并赋值。数据研发中,节点代码根据调度周期动态赋值(例如日期时间),替换变量后再进行计算。

参数类型说明

调度参数包括系统参数和自定义参数:
  • 系统参数可以在代码中直接使用${bizdate},${Node ID},${Task ID}、${业务板块名}和${项目名}。
    参数 描述
    ${bizdate} 定义实例计算时对应的业务日期,默认格式为yyyymmdd,即当前日期的前一天。
    ${Node ID} 任务节点ID。
    ${Task ID} 任务节点生成实例ID。
    ${业务板块名} 生产环境的业务板块名或开发环境的业务板块名。

    例如,如果系统有Dev-Prod模式生成的生产业务板块为LD_demo,开发业务板块为LD_demo_dev,则默认生产环境执行代码时${LD_demo}更新为LD_demo,开发环境执行代码时${LD_demo}更新为LD_demo_dev

    ${项目名} 生产环境的项目名或开发环境的项目名。

    例如,如果系统有Dev-Prod模式生成的生产项目为test_ast,开发业务板块为test_ast_dev,则默认生产环境执行代码时${test_ast}更新为test_ast,开发环境执行代码时${test_ast}更新为test_ast_dev

  • 自定义参数需要在参数配置区域赋值,自定义变量名及赋值。在代码中调用变量名即可。

调度参数生效说明

任务配置的参数只有在生产环境,才会参与系统的调度,根据调度周期动态赋值(例如日期时间),替换变量后再进行计算:
  • 如果是Basic开发模式,则需要提交任务节点至生产环境。
  • 如果是Dev-Prod开发模式,则需要提交并发布任务节点至生产环境。

开发环境和即席查询模块支持参数识别与设置,但与调度系统规则不同。运行任务节点时,系统不会根据自定义参数和系统参数的参数值进行计算,而是根据当前界面下,需要用户确认最新输入的参数值。例如,${bizdate}执行时,系统会识别并默认填入执行日期为默认值(2019年2月28日查询执行时,执行代码的${bizdate}替换为20190228)。

Dataphin调度系统节点配置参数的原则

  • 节点代码中引用参数的方式为${nodeParam}
  • 节点参数配置的格式为 KeyA=ValueA;KeyB=ValueB。不同参数配置之间的用英文分号(;)分隔。

    定义节点的Key不区分大小写,例如KeyA=ValueAkeya=ValueA定义的参数是一致的。代码中引用配置参数时,不会区分大小写。例如${KeyA}${keya}${keyA}都是引用自定义参数A。

  • 节点配置支持参数的引用,引用格式为KeyA=$KeyB; KeyB=ValueB,使用引用符号$,则此时相当于KeyA=ValueB; KeyB=ValueB

    Datapin系统中Voldemor会进行循环引用的校验,因此不支持循环定义。例如KeyA=$KeyB; KeyB=$KeyAbizdate=$bizdate

  • 支持自定义系统参数,则需要在参数配置区域赋值,例如bizdate=ABC

    如果用户配置的参数和默认参数有重复冲突,则用户配置的参数赋值会覆盖默认参数。例如,配置了bizdate=ABC,则节点代码中引用bizdate时,该bizdate的值会被替换为ABC,而不是具体日期参数值yyyymmdd。

Dataphin调度系统(Voldemort)时间参数的配置

  • 日调度包括业务日期和预计执行时间两种调度方式。 基于业务日期的参数赋值为${yyyyMMdd};基于预计执行时间的参数赋值为$[yyyyMMdd]。
  • 小时、分钟调度支持基于小时和分钟偏移,实现小时调度、分钟调度,暂不支持秒。HH表示小时,mi(或mm)表示分钟,ss表示秒,小时的偏移:delta/24,分钟的偏移:delta/24/60。 例如,在指定执行时间前一小时的表达式为$[HH-1/24],在业务日期前1分钟为${HHmmss-1/24/60}。
    注意 如果配置的时间参数只精确到日,则小写mm系统识别为月份。当月和分钟同时存在时,为了避免歧义,月份大写为MM,分钟小写为mm,否则系统会统一识别为分钟,从而导致月份参数出错。
当前日期 基于业务日期(T-1)的配置 实际值 基于预计执行时间(T)的配置 实际值
2018-01-10 ${yyyymmdd} 20180109 $[yyyymmdd] 20180110
2018-01-10 ${yyyyMMdd} 20180109 $[yyyyMMdd] 20180110
2018-01-10 ${yyyymmdd -1} 20180108 $[yyyymmdd -1] 20180109
2018-01-10 ${yyyymmdd -7} 20180102 $[yyyymmdd -7] 20180103
2018-01-10 ${yyyy-mm-dd} 2018-01-09 $[yyyy-mm-dd] 2018-01-10
2018-01-10 ${yyyy-mm} 2018-01 $[yyyy-mm] 2018-01
2018-01-10 ${yyyy-mm -1} 2017-12 $[yyyy-mm -1] 2017-12
2018-01-10 ${yyyy} 2018 $[yyyy] 2018
2018-01-10 ${yyyy+1} 2019 $[yyyy + 1] 2019
2018-01-10 ${yyyy/MM/dd HH:mm:ss} 2018/01/09 00:00:00 $[yyyy/MM/dd HH:mm:ss] 2018/01/10 00:00:00
2018-01-10 ${yyyy/MM/dd HH:mm:ss-1/24} 2018/01/08 23:00:00 $[HH:mm:ss-5/24/60] 23:55:00