调度参数是DataWorks任务调度时使用的参数,可根据您配置的调度参数取值规则,在每次任务运行时自动替换为真实的取值,实现任务调度时间内参数的动态替换。本文为您介绍调度参数支持的格式及相关使用。
背景信息
在Data Studio节点开发中,可通过${变量名}
方式自定义变量,并在 界面,通过赋值参数表达式为代码中的变量进行赋值,实现调度场景下代码动态入参。
调度参数支持赋值常量,即每次进行任务调度时,该参数传入同一个值。
部分节点的调度参数配置存在差异,例如:Shell节点中的变量只能以
$1
、$2
、$3…
来命名,更多节点调度参数配置详情请参见:附录:参考说明。
概念介绍
调度参数通常会被用于指代某些动态时间的场景,此场景下,您可基于业务日期和定时时间进行调度参数的取值设置。配置调度参数前,您可先了解这两个时间概念,便于后续设置调度参数取值。
概念 | 描述 |
概念 | 描述 |
业务日期 | 指昨天,在离线计算场景下,交易日期为业务发生的日期。DataWorks默认取调度时间内,任务预期调度运行时间的前一天(即昨天)的日期为业务日期,精确到天。 例如,今天统计前一天的营业额,此处的前一天,指交易发生的日期,也就是业务日期。 |
定时时间 | 指今天,即某业务数据加工任务的预期执行时间。DataWorks默认取调度时间内,任务预期调度运行的时间点(即今天)为定时时间,精确到秒。任务预期执行时间,与实际开始执行时间并非完全一致。任务实际开始执行时间受多方因素影响。 |
调度参数支持的格式
调度参数格式展示
在配置调度参数时,通常用于获取不同的时间数据,可根据业务需求选择基于业务日期或调度日期获取相应的时间数据。DataWorks提供业务日期与调度日期变量,其格式固定,您可通过以下方式自定义时间格式。
取值方式
参数格式
参数示例
相关参考
取值方式
参数格式
参数示例
相关参考
基于业务日期获取时间数据。
使用大括号
${}
结合yyyy
、yy
、mm
、dd
自定义组合生成时间参数,获取业务日期前后多少年
、月
、日
。业务日期为定时时间所在日期-1.即
${yyyymmdd}
的取值与$[yyyymmdd-1]
取值一致。可通过
${yyyymmdd}
、$[yyyymmdd-1]
等${…}
自定义时间格式获取,例如:${yyyymmdd±N}
${yyyymmdd±7*N}
${yy±N}
${mm}
${yyyy-mm-dd±N}
更多赋值示例,请参见:附录一:参数列表。
基于定时时间获取时间数据。
使用中括号
$[...]
,结合yyyy
、yy
、mm
、dd
、hh24
、mi
及ss
自定义组合生成时间参数,获取定时时间前后多少年
、月
、天
、小时
、分钟
、秒
。可通过
$[yyyymmddhh24miss]
等$[...]
自定义时间格式获取。例如,取前一天的前一小时,参数表达式为$[yyyymmdd-1-1/24]
。更多赋值示例,请参见::附录一:参数列表。
取多少小时、分钟,可能存在跨天问题,跨天时间的参数处理,详情请参见:调度参数往前取一个小时,如何处理跨天参数替换的问题。
在配置调度参数时,调度参数无法满足需求,可通过上述获取时间格式数据,再执行下表操作获取相应时间。
场景示例
操作说明
相关参考
场景示例
操作说明
相关参考
通过引擎函数将时间格式的内容加工为时间戳。
在代码中使用引擎函数获取目标时间。
${mm}01:获取每月1号。
通过字符串拼接,获取目标时间。
无
注意事项
${…}参数相关。
${…}参数只能精确到年月日,因此${…}参数不支持
${yyyy-mm-dd-1/24}
用法。若需对年份、月份进行计算,建议使用
${…}
参数。例如,${yyyy-N}
、${mm-N}
。
$[…]
参数相关。取N小时前、N分钟前的时间数据需使用
$[…]
参数。$[…]参数基于时分秒进行替换,无法根据
$[yyyy-N]
、$[mm-N]
时间格式获取多少年前、多少月前的时间数据。单独取年份、月份,请使用${…}
参数。如需获取精确到秒的时间数据,建议使用
$[…]
参数。例如,$[yyyy-mm-dd-1-1/24]
。
$[...]
调度参数替换值不随实例实际运行时间改变。$[...]
根据实例定时时间取值,调度参数替换值在实例生成时已确定,因此调度参数的替换值不会随着实例实际运行时间而改变。
$[...]
取小时参数时,支持取不同时间格式。hh24
代表根据24小时制时间格式取值,hh
代表根据12小时制时间格式取值。
${bizdate}
变量名说明。部分节点代码会自带一个
${bizdate}
变量名,该变量名无特殊含义。您可根据业务需求自定义代码中的变量名。取小时、分钟时间的跨天问题处理。
取多少小时、分钟,可能存在跨天问题,跨天时间的参数处理,详情请参见调度参数往前取一个小时,如何处理跨天参数替换的问题。
附录:参考说明
附录一:参数列表
常用取值示例如下:
日期加减周期 | 获取方式 |
前/后N年 |
|
前/后N月 |
|
前/后N周 |
|
前/后N天 |
|
年月日加/减N天 |
|
加/减N年(yyyy格式) |
|
加/减N年(yy格式) |
|
单独获取多少月前
、多少年前
等时间数据,建议使用${...}
参数。
${…}
参数仅支持对天、月、年时间进行加减。
常用取值示例如下:
时间加减周期 | 获取方式 |
后N年 |
|
前N年 |
|
后N月 |
|
前N月 |
|
前/后N周 |
|
前/后N天 |
|
前/后N小时 | 获取该时间数据包含如下方式:
|
前/后N分钟 | 获取该时间数据包含如下方式:
|
hh24
表示小时(12进制使用hh
),由于$cyctime
精确到时分秒,因此$[…]
参数可以精确到时分秒。您可以结合引擎函数,获取更多参数取值,详情请参见:调度参数往前取一个小时,如何处理跨天参数替换的问题。
获取多少小时
、多少分钟
前等时间数据请使用$[...]
参数。
调度参数替换值在实例生成时已经确定,因此调度参数的替换值不会随着实例实际运行时间而改变。
DataWorks支持下表的系统参数,可用于设置调度参数的取值。但该方式灵活性差,建议参考上文描述,使用自定义参数的方式设置调度参数取值。
内置参数 | 定义 |
$bizdate | 业务日期,格式为 该参数的应用较为广泛,日常调度中默认任务预期运行时间的前一天为业务日期。 |
$cyctime | 任务的定时时间,格式为 |
$gmtdate | 当前日期,格式为 该参数默认取当天日期,执行补数据操作时输入的日期为 |
$bizmonth | 业务月份,格式为
|
$jobid | 任务所属的业务流程ID。 |
$nodeid | 节点ID。 |
$taskid | 节点产生的实例ID。 |
附录二:调度参数与业务日期、定时时间、实际运行时间的关系
关系类别 | 说明及示例 |
关系类别 | 说明及示例 |
调度参数与实际运行时间的关系。 | 调度参数替换值在实例生成时已确定,因此,调度参数的替换值不会随着实例实际运行时间的改变而发生变化。 |
调度参数与任务定时时间的关系。 | 当调度参数取小时、分钟时,参数替换值由实例的定时时间决定,即由节点调度配置的定时调度时间决定。 例如,当前节点为小时调度节点,并且设置定时调度时间为
|
调度参数与业务日期、定时时间的关系。 |
附录三:系统支持的全局变量
系统变量 | 说明 |
系统变量 | 说明 |
${projectId} | 项目ID。 |
${projectName} | MaxCompute项目名。 |
${nodeId} | 节点ID。 |
${gmtdate} | 实例定时时间所在天的00:00:00,格式为yyyy-MM-dd 00:00:00。 |
${taskId} | 任务实例ID。 |
${seq} | 任务实例序号,代表该实例在当天同节点实例中的序号。 |
${cyctime} | 实例定时时间。 |
${status} | 实例的状态:成功(SUCCESS)、失败(FAILURE)。 |
${bizdate} | 业务日期。 |
${finishTime} | 实例结束时间。 |
${taskType} | 实例运行类型:正常(NORMAL)、手动(MANUAL)、暂停(PAUSE)、空跑(SKIP)、未选择(UNCHOOSE)、周月空跑(SKIP_CYCLE)。 |
${nodeName} | 节点名称。 |
附录四:关于夏令时说明
DataWorks可保障在进入和退出夏令时当天,任务能够正确运行。进入与退出夏令时切换产品侧的解决方案详情,请参见夏令时切换对调度任务运行的影响。为避免夏令时切换对您任务执行造成额外理解成本,建议实施夏令时的地域优先查看此文档。
- 本页导读 (1)
- 背景信息
- 概念介绍
- 调度参数支持的格式
- 调度参数格式展示
- 注意事项
- 附录:参考说明
- 附录一:参数列表
- 附录二:调度参数与业务日期、定时时间、实际运行时间的关系
- 附录三:系统支持的全局变量
- 附录四:关于夏令时说明