调度参数支持的格式

调度参数是DataWorks任务调度时使用的参数,可根据您配置的调度参数取值规则,在每次任务运行时自动替换为真实的取值,实现任务调度时间内参数的动态替换。本文为您介绍调度参数支持的格式及相关使用。

背景信息

您可在代码中通过${变量名}的方式定义变量,并在调度配置 > 参数界面,通过调度参数表达式为代码中的变量赋值,实现调度场景下的代码动态入参。部分节点的调度参数配置存在差异(例如,通用Shell节点中的变量只能以$1、$2、$3...命名),详情请参见各类型节点的调度参数配置示例

调度参数支持赋值常量,即每次进行任务调度时,该参数传入同一个值。如需在调度参数中为参数赋值常量,您可根据下图进行相应配置:

image

说明

本文主要基于通过调度参数实现代码动态入参场景进行说明。

本文为您介绍:

了解调度参数支持的格式后,您可根据业务需求配置并使用调度参数,详情请参见后续:配置及使用调度参数

概念介绍

调度参数通常会被用于指代某些动态时间的场景,此场景下,您可基于业务日期定时时间进行调度参数的取值设置。配置调度参数前,您可先了解这两个时间概念,便于后续设置调度参数取值。

概念

描述

业务日期

指昨天,在离线计算场景下,业务日期为业务发生的日期。DataWorks默认取调度时间内,任务预期调度运行时间的前一天(即昨天)的日期为业务日期,精确到天。例如,今天统计前一天的营业额,此处的前一天,指交易发生的日期,也就是业务日期。

定时时间

指今天,即某业务数据加工任务的预期执行时间。DataWorks默认取调度时间内,任务预期调度运行的时间点(即今天)为定时时间,精确到秒。任务预期执行时间,与实际开始执行时间并非完全一致。任务实际开始执行时间受多方因素影响。

调度参数支持的格式

通常,调度参数用于获取不同的时间数据,您可根据业务需求,选择基于业务日期或定时时间获取相应时间数据。

说明

DataWorks提供了部分内置变量,其格式固定,为了使用更加灵活,建议您通过以下方式自定义时间格式。

取值方式

参数格式

参数示例

相关参考

基于业务日期获取时间数据。

通常,使用大括号${...},结合yyyyyymmdd自定义组合生成时间参数,获取业务日期前后多少年、月、天。

说明

业务日期为定时时间所在日期-1。即${yyyymmdd}的取值与$[yyyymmdd-1]取值一致。

可通过${yyyymmdd}${yyyy-mm-dd}等${...}自定义时间格式获取,例如:

  • ${yyyymmdd±N}

  • ${yyyymmdd±7*N}

  • ${yy±N}

  • ${mm}

  • ${yyyy-mm-dd±N}

更多赋值示例,请参见自定义参数${...}

基于定时时间获取时间数据。

通常,使用中括号$[...],结合yyyyyymmddhh24miss自定义组合生成时间参数,获取定时时间前后多少年、月、天、小时、分钟、秒。

可通过$[yyyymmddhh24miss]$[...]自定义时间格式获取。例如,取前一天的前一小时,参数表达式为$[yyyymmdd-1-1/24]

调度参数无法覆盖的场景(即通过上述表达式无法直接获取预期格式的参数赋值),您可先通过上述方式获取时间格式数据,再执行下表操作获取相应时间。

场景示例

操作说明

相关参考

通过引擎函数将时间格式的内容加工为时间戳。

在代码中使用引擎函数获取目标时间。

调度参数返回值二次处理的典型场景

${mm}01:获取每月1号。

通过纯字符串拼接,获取目标时间。

注意事项

${…}参数相关

N年前、N月前的时间数据需使用${…}参数

  • ${…}参数只能精确到年月日,因此${…}参数不支持${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

${yyyy±N}

前/后N

${yyyymm±N}

前/后N

${yyyymmdd±7*N}

前/后N

${yyyymmdd±N}

年月日加/减N

${yyyymmdd±N}

加/减N年(yyyy格式)

${yyyy±N}年

加/减N年(yy格式)

${yy±N}年

重要
  • 单独获取多少月前多少年前等时间数据,建议使用${...}参数。

  • ${…}参数仅支持对天、月、年时间进行加减。

自定义参数$[...]

常用取值示例如下。

时间加减周期

获取方式

N

$[add_months(yyyymmdd,12*N)]

N

$[add_months(yyyymmdd,-12*N)]

N

$[add_months(yyyymmdd,N)]

N

$[add_months(yyyymmdd,-N)]

前/后N

$[yyyymmdd±7*N]

前/后N

$[yyyymmdd±N]

前/后N小时

获取该时间数据包含如下方式:

  • $[hh24miss±N/24]$[hh24±N/24]

  • $[自定义时间格式±N/24]

    例如,取前一个小时的不同时间格式:

    • 取月:$[mm-1/24]

    • 取年:$[yyyy-1/24]

    • 取年月:$[yyyymm-1/24]

    • 取年月日:$[yyyymmdd-1/24]

    • 取前一天且前一小时:$[yyyymmdd-1-1/24]

前/后N分钟

获取该时间数据包含如下方式:

  • $[hh24miss±N/24/60]

  • $[yyyymmddhh24miss±N/24/60]

  • $[mi±N/24/60]

  • $[自定义时间格式±N/24/60]

    例如,取定时时间15分钟前的不同时间格式:

    • $[yyyy-15/24/60]

    • $[yyyymm-15/24/60]

    • $[yyyymmdd-15/24/60]

    • $[hh24-15/24/60]

    • $[mi-15/24/60]

hh24表示小时(12进制使用hh),由于$cyctime精确到时分秒,因此$[…]参数可以精确到时分秒。您可以结合引擎函数,获取更多参数取值,详情请参见调度参数返回值二次处理的典型场景

重要
  • 获取多少小时多少分钟前等时间数据请使用$[...]参数。

  • 调度参数替换值在实例生成时已经确定,因此调度参数的替换值不会随着实例实际运行时间而改变。

系统内置参数

DataWorks支持下表的系统参数,可用于设置调度参数的取值。但该方式灵活性差,建议参考上文描述,使用自定义参数的方式设置调度参数取值。

内置参数

定义

$bizdate

业务日期,格式为yyyymmdd,与自定义参数${yyyymmdd}取值一致。

该参数的应用较为广泛,日常调度中默认任务预期运行时间的前一天为业务日期。

$cyctime

任务的定时时间,格式为yyyymmddhh24miss,与自定义参数$[yyyymmddhh24miss]取值一致。

$gmtdate

当前日期,格式为yyyymmdd

该参数默认取当天日期,执行补数据操作时输入的日期为业务日期+1

$bizmonth

业务月份,格式为yyyymm

  • 如果业务日期的月份与当前月份一致,则$bizmonth=业务日期月份-1

  • 如果业务日期的月份与当前月份不一致,则$bizmonth=业务日期月份

$jobid

任务所属的业务流程ID。

$nodeid

节点ID。

$taskid

节点产生的实例ID。

附录:调度参数与业务日期、定时时间、实际运行时间的关系

关系类别

说明及示例

调度参数与实际运行时间的关系

调度参数替换值在实例生成时已确定,因此,调度参数的替换值不会随着实例实际运行时间的改变而发生变化。

调度参数与任务定时时间的关系

当调度参数取小时、分钟时,参数替换值由实例的定时时间决定,即由节点调度配置的定时调度时间决定。定时时间

例如,当前节点为小时调度节点,并且设置定时调度时间为00:00~23:59,每小时调度一次,则:

  • 第一个小时实例定时时间为0点,小时的参数取值为00

  • 第二个小时实例定时时间为1点,小时的参数取值为01

调度参数与业务日期、定时时间的关系

与业务日期、定时时间关系

附录:关于夏令时说明

DataWorks可保障在进入和退出夏令时当天,任务能够正确运行。进入与退出夏令时切换产品侧的解决方案详情,请参见相关文档场景:夏令时切换对调度任务运行的影响。为避免夏令时切换对您任务执行造成额外理解成本,建议实施夏令时的地域优先查看此文档。

后续:配置及使用调度参数

了解调度参数支持的时间格式后,您可基于业务需求配置并使用调度参数,详情请参见配置并使用调度参数