调度参数支持格式

更新时间:2025-02-25 06:47:05

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

背景信息

Data Studio节点开发中,可通过${变量名}方式自定义变量,并在调度配置 > 调度参数界面,通过赋值参数表达式为代码中的变量进行赋值,实现调度场景下代码动态入参。

说明
  • 调度参数支持赋值常量,即每次进行任务调度时,该参数传入同一个值。

  • 部分节点的调度参数配置存在差异,例如:Shell节点中的变量只能以$1$2$3…来命名,更多节点调度参数配置详情请参见:附录:参考说明

概念介绍

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

概念

描述

概念

描述

业务日期

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

例如,今天统计前一天的营业额,此处的前一天,指交易发生的日期,也就是业务日期。

定时时间

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

调度参数支持的格式

调度参数格式展示

  • 在配置调度参数时,通常用于获取不同的时间数据,可根据业务需求选择基于业务日期或调度日期获取相应的时间数据。DataWorks提供业务日期与调度日期变量,其格式固定,您可通过以下方式自定义时间格式。

    取值方式

    参数格式

    参数示例

    相关参考

    取值方式

    参数格式

    参数示例

    相关参考

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

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

    说明

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

    可通过${yyyymmdd}$[yyyymmdd-1]${…}自定义时间格式获取,例如:

    • ${yyyymmdd±N}

    • ${yyyymmdd±7*N}

    • ${yy±N}

    • ${mm}

    • ${yyyy-mm-dd±N}

    更多赋值示例,请参见:附录一:参数列表

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

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

    可通过$[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

${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。

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

关系类别

说明及示例

关系类别

说明及示例

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

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

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

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

image

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

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

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

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

image

附录三:系统支持的全局变量

系统变量

说明

系统变量

说明

${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)
  • 背景信息
  • 概念介绍
  • 调度参数支持的格式
  • 调度参数格式展示
  • 注意事项
  • 附录:参考说明
  • 附录一:参数列表
  • 附录二:调度参数与业务日期、定时时间、实际运行时间的关系
  • 附录三:系统支持的全局变量
  • 附录四:关于夏令时说明
AI助理

点击开启售前

在线咨询服务

你好,我是AI助理

可以解答问题、推荐解决方案等