业务日期和定时时间结合调度参数使用
关于调度参数的使用,可以参考一下官网文档:参数配置。
给大家解析一下这篇文档:
DataWorks调度系统参数:
调度系统参数:这两个调度系统参数无需赋值,可直接使用。
- ${bdp.system.cyctime}:定义为一个实例的定时运行时间,默认格式为:yyyymmddhh24miss。
- ${bdp.system.bizdate}:定义为一个实例计算时对应的业务日期,业务日期默认为运行日期的前一天,默认以 yyyymmdd 的格式显示(业务日期不精确到时分秒)。
DataWorks 自定义调度参数:有时候我们需要对时间参数进行加减,此时使用调度系统参数已经无法满足我们的需求了。面对这种情况,DataWorks 提供了自定义调度参数,用户可根据自己的业务需求,灵活的对时间参数进行加减,完美的解决各种复杂的场景。
自定义系统参数
自定义系统参数是以 bdp.system.cyctime 为基准的,任何的时间加减都是以定时时间为基线,向上或者向下移动。
举个例子:
代码为: select ${today} from dual ;
注 :其中 ${today} 是声明变量
调度配置为:today = $[yyyymmdd]
注:其中 $[yyyymmdd] 是给声明的变量赋值
测试运行的时候,选择的业务日期是 20180305,测试运行时,日志中打印出来的实际运行sql为:select 20180306 from dual;
附上一张步骤图
敲黑板:请注意调度参数的配置时 , 声明变量的符号和赋值的符号是不一样的,详情如下:
- ${} 这个符号是声明变量时使用的;
- $[] 这个符号是给变量赋值的时候使用的;
以下提供一些调度参数的赋值方法:
- 后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-7*N]
- 后N天:$[yyyymmdd+N]
- 前N天:$[yyyymmdd-N]
- 后N小时:$[hh24miss+N/24]
- 前N小时:$[hh24miss-N/24]
- 后N分钟:$[hh24miss+N/24/60]
- 前N分钟:$[hh24miss-N/24/60]
小时级调度的例子
例一
业务场景1:查看业务日期为 20180305 的小时任务,上午 3 点的实例,运行时执行的代码。
代码:select ${min} from dual ;
注:其中 ${min} 是声明变量
调度配置:min = $[yyyymmddhh24miss]
注:其中 $[yyyymmddhh24miss] 是给声明的变量赋值
测试运行时,日志中的运行代码为:select 20180306030000 from dual ;
例二
业务场景2:如何获得业务日期为 20180305 的小时任务,上午 3 点的实例,前 15 分钟的时间。
代码 : select ${min} from dual;
注:其中 ${min} 是声明变量
调度配置:min = $[yyyymmddhh24miss-15/24/60]
注:其中 $[yyyymmddhh24miss-15/24/60] 是给声明的变量赋值
测试运行时,日志中的运行代码为:select 20180306024500 from dual ;
测试调度参数
有不少同学可能没有接触过如何测试调度参数,这里放上我之前写的一篇文章《解析Dataworks中的运行和测试运行的区别》 ,调度参数和测试运行是需要结合使用的,没有经过调度系统,调度参数是无法生效的。
注:如果对此还有不了解的地方,请加入钉钉群,AT 彭敏 & 李珍珍获取技术支持。