且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

DataWorks 调度参数设置 | 学习笔记

更新时间:2022-09-02 15:35:07

开发者学堂课程【SaaS  模式云数据仓库系列课程 —— 2021数仓必修课DataWorks调度参数设置】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/55/detail/1197


DataWorks 调度参数设置


内容简介:

一、调度参数分类

二、使用示例

三、注意事项

四、常见问题场景

五、实操演练



一、调度参数分类

DataWorks  调度参数设置 | 学习笔记

(一)系统参数配置

1.系统参数取值与格式区别

${bdp.system.bizdate} : 取值:业务时间:取值格式: yyymmdd,取值与自定义参数${yymmdd}一致。

${bdp.system,cyctime} : 取值:定时时间;取值格式: yyymmddhh24miss,取值与自定义参数 $yyymmddhh24miss] 一致。

系统内置变量可以在代码中直接使用,无需赋值

2.自定义参数${…}

DataWorks  调度参数设置 | 学习笔记

3.自定义参数$[…]

DataWorks  调度参数设置 | 学习笔记

4.系统内置参数

DataWorks  调度参数设置 | 学习笔记

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 节点使用示例

1.使用系统变量:系统内置变量可以在代码中直接使用,无需赋值。

2.使用自定义参数

左侧代码区引用变量,变量名可自定义

Shell 节点中的交量不允许自定义命名,只能以 $1,$2.$3命名;

注意:参数到达第10个后,请使用${10}的方式声明变,

右侧参数处赋值,可赋值格式参考官网文档

常量参数赋值: "abc''1234。

变量参数赋值:$bizdate——系统内置参数取业务时间。

${yyymmdd}——大括号${…}取业务时间。

$[yyymmddhh24miss]——中括号$[…]取定时时间。

(四)PYODPS 节点使用示例

1.使用系统变量:系统内置变量可以在代码中直接使用,无需赋值

2.使用自定义参数

左侧代码区引用变量,变量名可自定义,

为避免侵入代码,可在全局变量中增加个名为 args 的字典对象,调度参数可以在此获取。

右侧参数处赋值,可赋值格式参考官网文档

常量参数赋值:  "var=abc' 1234。

变量参数赋值:

varl=$bizdate——系统内置参数取业务时间。

var2=${yyymmdd}——大括号${…}取业务时间。

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 }'