DataWorks中业务日期和定时时间的理解

业务日期和定时时间结合调度参数使用

关于调度参数的使用,可以参考一下官网文档:参数配置
给大家解析一下这篇文档:

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;

附上一张步骤图

DataWorks中业务日期和定时时间的理解

敲黑板:请注意调度参数的配置时 , 声明变量的符号和赋值的符号是不一样的,详情如下:

  • ${} 这个符号是声明变量时使用的;
  • $[] 这个符号是给变量赋值的时候使用的;

以下提供一些调度参数的赋值方法:

  • 后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 彭敏 & 李珍珍获取技术支持。

DataWorks中业务日期和定时时间的理解

上一篇:*行业应用解决方案 | 应急行业


下一篇:数值计算:注意精度、舍入和溢出问题