自定义参数取值差异对比

自定义参数分为系统内置参数、自定义参数${..}、自定义参数$[...]、常量,不同类别的参数赋值格式及取值不同。本文为您介绍不同格式自定义参数的取值差异对比情况。

不同格式自定义参数的应用对比

以当前时间为20211101,任务每天00:00定时运行,示例不同格式自定义参数的赋值情况,具体如下表。

说明

假设代码引用方式均为pt=${datetime}

参数格式

描述

调度参数赋值

参数替换结果

${yyyymmdd}

获取业务时间。

datetime=${yyyymmdd}

datetime=20211031

$[yyyymmddhh24miss]

获取定时时间,精确到秒。

datetime=$[yyyymmddhh24miss]

datetime=20211101000000

$bizdate

获取业务时间。

datetime=$bizdate

datetime=20211031

$cyctime

获取定时时间,精确到秒。

datetime=$cyctime

datetime=20211101000000

$gmtdate

获取当前时间,精确到天。

datetime=$gmtdate

datetime=20211101

$bizmonth

获取业务月份。

datetime=$bizmonth

  • 当业务时间与当前月份一致时,$bizmonth的值为当前时间上个月的月份。

  • 当业务时间与当前月份不一致时,$bizmonth的值为业务时间的月份。

示例当前时间为20211101

${…}和$[…]参数的功能差异

${…}和$[…]参数的功能差异如下表所示。

对比项

${…}参数

$[…]参数

时间基准

$bizdate的取值时间为基准参与运算。

$bizdate为业务日期,默认为当前时间的前一天。

$cyctime的时间为基准参与运算。

$cyctime为任务的定时调度时间。例如,任务的定时调度时间为当天的00:30,即时间格式为yyyy-mm-dd 00:30:00

补数据功能

补数据时选择的业务日期和调度参数的替换结果保持一致。

执行补数据时,调度参数替换结果为选择的业务日期+1天。

例如,补数据选择的业务日期为20220315,则执行补数据时,$cyctime参数的替换结果为20220316

时间精确度

精确到天。

N年前、N月前等时间数据时,建议使用${...}自定义表达式。

精确到秒。

N小时前、N分钟前等时间数据时,建议使用$[...]自定义表达式。例如:$[yyyymmdd-1-1/24]表示取前一天定时时间前一个小时对应的时间数据。

说明

$[…]参数不支持${yyyy-mm-dd-1/24}等用法,建议您使用$[yyyy-mm-dd-1-1/24]

本文以ODPS SQL节点为例,假设当前时间为20210720103000,为您展示${…}和$[…]参数的时间取值配置,具体如下表。

时间取值

${…}参数

$[…]参数

取年份:2021

  • 调度参数赋值:datetime=${yyyy}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yyyy}=2021

  • 调度参数赋值:datetime=$[yyyy]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[yyyy]=2021

取年份:21

  • 调度参数赋值:datetime=${yy}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yy}=21

  • 调度参数赋值:datetime=$[yy]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[yy]=21

取年份:2020

  • 调度参数赋值:datetime=${yyyy-1}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yyyy-1}=2020

不支持

取月份:07

  • 调度参数赋值:datetime=${mm}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${mm}=07

  • 调度参数赋值:datetime=$[mm]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[mm]=07

取日期(天):20

  • 调度参数赋值:datetime=${dd}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${dd}=20

  • 调度参数赋值:datetime=$[dd]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[dd]=20

取日期:20210620

  • 调度参数赋值:datetime=${yyyy-mm-dd-29}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yyyy-mm-dd-29}=2021-06-20

  • 调度参数赋值:datetime=$[add_months(yyyymmdd,-1)]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[add_months(yyyymmdd,-1)]=2021-06-20

取日期:20210719

  • 调度参数赋值:datetime=${yyyy-mm-dd}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yyyy-mm-dd}=2021-07-19

  • 调度参数赋值:datetime=$[yyyy-mm-dd-1]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[yyyy-mm-dd-1]=2021-07-19

取日期:20200720

  • 调度参数赋值:datetime=${yyyy-mm-dd-364}

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=${yyyy-mm-dd-364}=2020-07-20

  • 调度参数赋值:datetime=$[add_months(yyyymmdd,-12*1)]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[add_months(yyyymmdd,-12*1)]=2020-07-20

取时间:10:30:00

不支持

  • 调度参数赋值:datetime=$[hh24:mi:ss]

  • 代码引用:pt=${datetime}

  • 参数替换结果:pt=$[hh24:mi:ss]=10:30:00

取时间:2021-07-20 10:30:00

不支持

  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss]

    说明

    您需要自定义两个参数datetime1datetime2,两个参数间使用一个空格分隔。

  • 代码引用:pt=${datetime1} ${datetime2}

  • 参数替换结果:

    • datetime1=$[yyyy-mm-dd]=2021-07-20

    • datetime2=$[hh24:mi:ss]=10:30:00

    • pt=2021-07-20 10:30:00

取时间:2021-07-20 10:29:00

不支持

  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24/60]

    说明 您需要自定义两个参数datetime1datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}

  • 参数替换结果:

    • datetime1=$[yyyy-mm-dd]=2021-07-20

    • datetime2=$[hh24:mi:ss-1/24/60]=10:29:00

    • pt=2021-07-20 10:29:00

取时间:2021-07-20 09:30:00

不支持

  • 调度参数赋值:datetime1=$[yyyy-mm-dd] datetime2=$[hh24:mi:ss-1/24]

    说明 您需要自定义两个参数datetime1datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}

  • 参数替换结果:

    • datetime1=$[yyyy-mm-dd]=2021-07-20

    • datetime2=$[hh24:mi:ss-1/24]=09:30:00

    • pt=2021-07-20 09:30:00

取前一天时间,精确到秒,且年月日与时分秒之间无空格:

2021071910:30:00

不支持

  • 调度参数赋值:datetime=$[yyyymmddhh24miss-1]

  • 代码引用:pt=${datetime}

  • 参数替换结果:

    • datetime=$[yyyymmddhh24miss-1]=2021071910:30:00

    • pt=2021071910:30:00

取前一天时间,精确到秒,且年月日与时分秒之间有空格:

20210719 10:30:00

不支持

重要

调度参数赋值表达式中不支持空格,您可以使用两个调度参数,然后在代码引用时使用空格进行拼接。

  • 调度参数赋值:datetime1=$[yyyymmdd-1] datetime2=$[hh24:mi:ss]

    说明 您需要自定义两个参数datetime1datetime2,两个参数间使用一个空格分隔。
  • 代码引用:pt=${datetime1} ${datetime2}

  • 参数替换结果:

    • datetime1=$[yyyymmdd-1]=2021-07-19

    • datetime2=$[hh24:mi:ss]=10:30:00

    • pt=20210719 10:30:00