开发者学堂课程【SaaS 模式云数据仓库系列课程 —— 2021数仓必修课:DataWorks调度参数设置】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:
https://developer.aliyun.com/learning/course/55/detail/1197DataWorks 调度参数设置
内容简介:
一、调度参数分类
二、使用示例
三、注意事项
四、常见问题场景
五、实操演练
(一)系统参数配置
1.系统参数取值与格式区别
${bdp.system.bizdate} : 取值:业务时间:取值格式: yyymmdd,取值与自定义参数${yymmdd}一致。
${bdp.system,cyctime} : 取值:定时时间;取值格式: yyymmddhh24miss,取值与自定义参数 $yyymmddhh24miss] 一致。
系统内置变量可以在代码中直接使用,无需赋值
2.自定义参数${…}
3.自定义参数$[…]
4.系统内置参数
5.使用示例
"1.使用系统内置变量,无需在右侧调度配置界面给变量赋值,在代码中直接引用即可"。
select '${bdp. system. cyctime}';
"2.使用自定义参故,需要在右侧参效界面以“变量名=自定义参数”的方式给变量赋值。在代码中引用变量名""
"2.1使用系统内置参效bizdate";
select "${var1}";
2.2使用大括号{}自定义参数";
select "${var2}";
"2.3使用中括号[]自定义参数";
select '${var3}' '${var4}';
(一)ODPS SQL 节点使用示例
1.使用系统变量:系统内置变量可以在代码中直接使用,无需赋值
2.使用自定义参数:
左侧代码区引用变量,变量名可自定义,右侧参数处赋值,可赋值格式参考官网文档。
常量参数赋值: var="abc" key2=1234。
变量参数赋值: varl= $bizdate——系统内置参数取业务时间。
var2= ${yyyymmdd}——大括号{…}取业务时间。
var3=[ yyyymmddhh24.miss]——中括号[…]取定时时间。
(二)数据集成节点使用示例
1.使用系统变量:系统内置变量可以在代码中直接使用,无需赋值。
2.使用自定义参数
左侧代码区引用变量,变量名可自定义
变量名可以自定义。
注意 bizdate 使用时, 一定要在右侧参数处赋值
右侧参数处赋值,可赋值格式参考官网文档
常量参数赋值: "var=abc' 1234。
变量参数赋值:
varl=$bizdate——系统内置参数取业务时间。
var2=${yyymmdd}——大括号${…}取业务时间。
var=$[yyymmddhh24miss]——中括号$[…]取定时时间。
(三)SHELL 节点使用示例
Shell 节点中的交量不允许自定义命名,只能以 $1,$2.$3命名;
注意:参数到达第10个后,请使用${10}的方式声明变,
常量参数赋值: "abc''1234。
变量参数赋值:$bizdate——系统内置参数取业务时间。
${yyymmdd}——大括号${…}取业务时间。
$[yyymmddhh24miss]——中括号$[…]取定时时间。
(四)PYODPS 节点使用示例
左侧代码区引用变量,变量名可自定义,
为避免侵入代码,可在全局变量中增加个名为 args 的字典对象,调度参数可以在此获取。
常量参数赋值: "var=abc' 1234。
var-=$[yyymmddhh24miss]——中括号$[…]取定时时间。
(一)三种运行赋值逻辑说明
选择运行,只会在第一次弹框时给当前的变量赋值常量。如果修改了代码中变量名是不会继续弹框给新变量赋值。
选择高级运行,每次都会弹框给当前变量赋值。
如果您变更了代码中的变量,或者需要重新为变量赋值,请务必使用高级运行。
(二)两类运行赋值区别
选择运行或者高级运行,请在弹框中给代码中的变量赋值常量。
开发环境冒烟测试:根据业务时间替换调度参数;若修改了调度参数赋值,请务必先保存提交,再使用开发环境冒烟测试:
如果需要测试调度参数替换情况,请使用开发环境冒烟测试。
如果您变更了代码中的变量,或者需要重新为变量赋值,请务必高级运行。
(三)赋值注意事项
调度参数赋值中不支持空格
time①=②$yyymmdd③hh24:miss]
time1=$[yyymmdd]④time2=Shh24:mi:ss]
①②③④为空格所在位置
${...}取业务时间,最小粒度天
$[…]取定时时间,可精确到时分秒
注意
调度参数的等号(= )两端不可以加空格,即示例中的①②处。
调度参数赋值中不支持空格,即示例中的③处。
两个调度参数间用个空格分隔,即示例中的④处。
(一)场景一:如何处理表的分区格式中需要空格的情况
解决方案:
参数赋值区:使用两个自定义变量参数分别取年月日,时分秒
datetime= $[yyyy-mm-dd] hour= [hh24:mi:ss]。
代码调用区:在代码中用空格拼接两个参数。
pt=${datetime} ${hour}。
(二)场景二:跨天调度参数替换
如何处理0点运行的实例,计算结果变为当天的23点,实际应当是前一天的23点的情况?
问题描述:
在代码中表的分区为 pt= ${datetime} ${hour},希望执行时获取上个小时的数据。使用两个自定义变量参数 datetime=$[yyymmdd]、hour=S[hh24-1/24] 可以满足需求。但是0点运行的实例,计算结果会变成当天的23点,实际应当是前一天的23点。
解决方法:
您可以修改参数的计算公式,修改 datetime为$[yyymmdd-1/24],hour 的计算公式仍然是 $[hh24-1/24]。计算结果如下,即可满足需求:
如果一个实例的定时时间是2015-10-27 00:00:00,减1小时便是昨天,则$[yyymmdd-1/24] 的值是20151026、 $[hh24-1/24]的值是23。
如果一个实例的定时时间为2015-10-27 01:00:00的实例,减1小时还是今天,则$[yyymmdd-1/24] 的值是20151027、 $[hh24-1/24]的值是00。
(一)调度参数分类相关代码
1
2
3 "1.使用系统内置变量,无需在右侧调度配置界面给变量赋值,在代码中直接引用即可"。
4
5 select '${bdp. system. bizdate}';
6
7 select '${bdp. system. cyctime}'
8
9
10 --"2.使用自定义参故,需要在右侧参效界面以“变量名=自定义参数”的方式给变量赋值。在代码中引用变量名""
11
12 -- "2.1使用系统内置参效bizdate";
13
14 --select "${var1}"
15
16 --2.2使用大括号{}自定义参数";
17
18 --select "${var2}";
19
20 --"2.3使用中括号[]自定义参数";
21
22 --select '${var3}' '${var4}';
(二)自定义参数测试_大括号
1 --"2.2使用大括号{}自定义参数";
2
3 --格式为:yyymmdd
4 select "${bizdate}";
5
6 select "${var1}";
7
8 select '${var3}' '${var5}';
(三)自定义参数测试_中括号相关代码
1 --"2.2使用中括号[]自定义参数";
2
3 --cyctime取值格式为:yyymmddhh24
4 select "${cyctime}";
5
6 select ‘${var1}’‘${var3}’
7
8 select '${var4}' '${var5}';
(四)场景_赋值中带空格相关代码
1
2 --场景:如何处理表的分区格式中需要空格的情况
3
4 --select '${var}';
5 --var=$ lyyyymnddhh24miss]
6
7 select '${var1}' '${var2}';
8 --var1=$ yyy- m- dd] var2=$ [hh24:mi:ss]
(五)场景_赋值中带空格相关代码
1
2 --场景:如何处理0点运行的实例,计算结果变为当天的23点,实际应当是前一天的23点的情况?
3
4 select”pt= ${datetime} ${hour}”
(六)运行与高级运行的相关代码
1 --odps sql
2 --********************************************************************--
3 -- author : dataworks-demo2
4 --create time :2020-10-18 20:02:26
5 --*************************************************--
6 select '${varp }'