开发者学堂课程【DataWorks 一站式大数据开发治理平台精品课程:3.DataWorks 调度参数配置】与课程紧密联系,让用户快速学习知识
课程地址:https://developer.aliyun.com/learning/course/81/detail/1240
3.DataWorks 调度参数配置(一)
内容介绍:
一、分类
二、使用示例
三、注意事项
四、常见的使用场景
五、实操演练
内容简介:
调度参数会跟业务时间进行自动替换,这样可以实现独立式数据,数据集成也可以结合调度参数实现增量同步。本次主要介绍调度参数的分类以及使用,调度参数如何进行测试,以及在运行时候经常会遇到的问题。
一、分类
1、参数
系统内置变量,自定义参数。区别在于能否在代码中直接使用。
系统内置变量:${bdp.system.bizdate}、
${bdp.system.cyctime},可以在代码中直接使用,不需要赋值。
(2)自定义参数:${...}、$[…]、系统内置参数、常量。自定义参数是需要在代码中制定一个变量,在参数处给变量赋值。
2、系统参数配置
(1)系统参数取值与格式区别
${bdp.system.bizdate} :取值:业务时间;取值格式: yyyymmdd,取值与自定义参数${yymmdd}一致。
${bdp.system,cyctime} :取值:定时时间;取值格式: yyyymmddhh24miss,取值与自定义参数$yyymmddhh24miss}一致。
(2)系统内置变量可以在代码中直接使用,无需赋值。
在参数替换时的区别是任务的业务时间等于定时时间减一天的,也就是业务时间在定时时间前一天,要注意的就是系统内置变量可以在代码中直接使用,不需要在右侧的参数赋值。
(3)以下是三类节点的使用方式,第一个是 shell,第二个是 pyodps 第三个是odps sql。
也是一样的,在代码中直接使用就可以。
3、自定义参数${…}
获取加减周期 |
方法 |
后N年 |
${yyyy+N} |
前N年 |
${yyyy-N} |
后N月 |
${yyyymm+N} |
前N月 |
${yyyymm-N} |
后N周 |
${yyyymmdd+ 7*N} |
前N周 |
${yyyymmdd-7*N} |
后N天 |
${yyyymmdd+N} |
前N天 |
${yyyymmdd-N} |
年月日加N天 |
${yyyymmdd+N} |
年月日减N天 |
${yyyymmdd-N} |
( yyyy )加N年 |
${yyyy+N}n年 |
( yyyy )减N年 |
${yyyy-N}年 |
(yy )加N年 |
${yy+ N}年 |
(yy)减N年 |
${yy-N}年 |
月份加N月 |
${mm+N} |
月份减N月 |
${mm-N} |
取当天业务时间 |
${yyyy-mm-dd} |
如果只取月份,需要用大括号的格式取,格式支持修改,比如在年月日中间加一个横杠。
4、自定义参数$[…]
获取加减周期 |
方法 |
后N年 |
$[add_ _monthslyyyymmdd,12*N)] |
前N年 |
$[add_ months(yyyymmdd, 12*N)] |
后N月 |
$[add_ _months(yyyymmdd,N)] |
前N月 |
$[add_ monthsyyymmdd,-N)] |
后N周 |
$[oyyymmdd+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] |
当前小时 |
$[hh24] |
当前分钟 |
$[mi] |
定时时间 |
$[yyyy-mm-dd] |
获取加减周期 |
方法 |
后N年 |
$[add_ _monthslyyyymmdd,12*N)] |
前N年 |
$[add_ months(yyyymmdd, 12*N)] |
后N月 |
$[add_ _months(yyyymmdd,N)] |
前N月 |
$[add_ monthsyyymmdd,-N)] |
后N周 |
$[oyyymmdd+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] |
当前小时 |
$[hh24] |
当前分钟 |
$[mi] |
定时时间 |
$[yyyy-mm-dd] |
需要注意,中括号的格式可以精确到时分秒,所以取到时分秒精确的时间时候需要用中括号的格式。
5、系统内置参数
参数 |
描述 |
$jobid |
任务所属的业务流程ID。使用示例: jobid=$jobid。 |
$nodeid |
节点ID.使用示例: nodeid= $nodeid。 |
$taskid |
任务ID ,即节点实例ID。使用示例: taskid= $taskid。 |
$bizdate |
业务日期,格式为yyyymmdd.该参数的应用较为广泛,日常调度中默认运行时间的前一天为业务日期。 |
$cyctime |
任务的定时时间,格式为yyyymmddhh24miss.如果未给天任务定时,则默认定时时间为当天0点整(精确到时分秒,通常小时、分钟级调度任务使用),使用示例: cyctime=$cyctime。 |
$gmtdate |
当前日期,格式为yymmdd。该参数默认为当天日期,补数据时传入的是业务日期+1。 |
$bizmonth |
业务月份,格式为yyyymm.如果业务日期的月份和当前月份一致, $bizmonth=业务日期月份-1。 如果业务日期的月份和当前月份不一致, $bizmonth=业务日期月份。 |
二、使用示例
可以看到当前演示用的是 odps sql,在代码中可以直接使用
bdp . system. cyctime和bdp . system. Bizdate,不需要在右侧赋值,自定义参数需要在代码中自定义一个变量名,可以是任何一个字母组合,但是这里要强调的是直接使用 Bizdate 和使用 bdp . system. Bizdate,这两种一个是需要在代码中使用变量名,在参数处复制。假设代码中的变量名是 Bizdate,需要在右侧的参数这里同样赋值 Bizdate,因为Bizdate单独使用时,是不能够在代码之中直接使用的,能够直接使用的只有这两种格式,一个是 bdp . system. cyctime 和bdp . system. Bizdate。
1、ODPS SQL节点使用示例
(1)使用系统变量
系统内置变量可以在代码中直接使用,无需赋值。
(2)使用自定义参数
左侧代码区引用变量,变量名可自定义,右侧参数处赋值,可赋值格式参考官网文档。
- 常量参数赋值: var=" abc" key2=1234.
- 变量参数赋值: var1= $bizdate一系统内置参数取业务时间
- var2=${yyymmdd}一中括号{..}取业务时间。
- var3=$[yyymmddhh24:mi:ss]一中括号[..]取定时时间。
- 数据集成节点使用示例
(1)使用系统变量
系统内置变量可以在代码中直接使用,无需赋值。
(2)使用自定义参数
左侧代码区引用变量,变量名可自定义,注意bizdate使用时,一定要在右侧参数处赋值。右侧参数处赋值,可赋值格式参考官网文档
- 常量参数赋值: "var=abc" 1234。
- 变量参数赋值:var1=$bizdate一系统内置参数取业务时间
- var2=${yyymmdd}一大括号:{..}取业务时间。
- var3= $[yyymmddhh24:miss]一中括号$[…]取定时时间。
数据集成节点的使用和odps sql节点的使用是一致的,因为数据集成节点用的比较多,使用系统变量时直接用使用自定义参数时,需要在右侧参数这里布置,这里数据集成会默认带一个bizdate的变量名,需要注意是变量名是属于自定义参数,它需要在右侧参数处复制的,只有bdp . system. cyctime,格式不需要到参数处复制。
4.SHELL 节点使用示例
(1)使用系统变量
系统内置变量可以在代码中直接使用,无需赋值
(2)使用自定义参数
左侧代码区引用变量,变量名不可自定义,Shell节点中的变量不允许自定义命名,只能以$1,$2.$..命名;注意:参数到达第10个后,请使用${10}的方式声明变。
右侧参数处赋值,可赋值格式参考官网文档,
常量参数赋值:"abc" 1234,变量参数赋值:
- $bizdate系统内置参数取业务时间。
- ${yyymmdd} 大括号...取业务时间。
- $[yyyymmddhh24:mi:ss] 中括号$[…]取定时时间。
5.PYODPS 节点使用示例
(1)使用系统变量
系统内置变量可以在代码中直接使用,无需赋值
(2)使用自定义参数
左侧代码区引用变量,变量名可自定义,为避免侵入代码,可在全局变量中增加一个名为args的字典对象,调度参数可以在此获取。
右侧参数处赋值,可赋值格式参考官网文档,常量参数赋值: "var=abc" 1234。变量参数赋值:
- var1= $bizdate系统内置参数取业务时间
- var2= ${yyymmdd}大括号$(..)取业务时间。
- var3= $[yyyymmddhh24:miss] 中括号$[..]取定时时间。
参数赋值跟 odps sql 节点是类似的。