3.DataWorks 调度参数配置(二)|学习笔记

本文涉及的产品
大数据开发治理平台DataWorks,Serverless资源组抵扣包300CU*H
简介: 快速学习3.DataWorks 调度参数配置

开发者学堂课程【DataWorks 一站式大数据开发治理平台精品课程:3.DataWorks 调度参数配置】与课程紧密联系,让用户快速学习知识

课程地址:https://developer.aliyun.com/learning/course/81/detail/1240


3.DataWorks 调度参数配置(二)

三、注意事项

1、三种运行赋值逻辑说明

一个是运行,一个是高级运行,还有一个是开发环境冒烟测试。

(1)选择运行,只会在第一次弹框时给当前的变量赋值常量。如果修改了代码中变量名是不会继续弹框给新变量赋值。

(2)选择高级运行,每次都会弹框给当前变量赋值。

(3)如果您变更了代码中的变量,或者需要重新为变量赋值,请务必

使用高级运行。

代码里面已经看起来是没有问题的,为什么赋值情况还是不对呢?那是因为直接选择运行时,它还是记录了第一次运行时候的变量名和赋值情况。所以如果修改了代码中的变量,或者是需要重新给变量赋值,一定要选择高级运行,给当前的变量赋值常量。需要注意,运行和高级运行是给代码中的变量赋值常量,因为调度参数只有走调度时才会替换。

2、两类运行赋值区别

(1)选择运行或者高级运行,请在弹框中给代码中的变量赋值常量。

(2)如果想测试当前参数这里估值情况是不是预期的那样,使用开发环境冒烟测试,根据业务时间替换调度参数;若修改了调度参数赋值,请务必先保存提交,再使用开发环境冒烟测试。

(3)如果需要测试调度参数替换情况,请使用开发环境冒烟测试。

(4)如果您变更了代码中的变量,或者需要重新为变量赋值,请务必

使用高级运行。不会校验右侧的调度参数的配置它的格式是怎么样的。所以如果要测试调度参数,可以使用开发环境冒烟测试。需要注意,如果修改了调度参数的赋值,一定要先保存提交,再使用开发环境冒烟测试功能。因为保存操作是不会将代码提交到开发环境的,开发环境冒烟测试又测试的是开发环境该节点的代码情况,所以如果要使用开发环境冒烟测试,一定要先保存提交,再使用开发环境冒烟测试。

3、赋值注意事项

(1)调度参数赋值中不支持空格

  1. time①=②$yyymmdd③hh24:mi:ss]等号两边是不能够带空格,赋值里面不能带空格。
  2. time1=$[yyymmdd]④time2=$[hh24:mi:ss]两个参数之间可以用一个空格。
  3. ①②③④为空格所在位置

(2)${...}取业务时间,最小粒度天

(3)$[..]取定时时间,可精确到时分秒

(4)注意

  1. 调度参数的等号(= )两端不可以加空格,即示例中的①②处。
  2. 调度参数赋值中不支持空格,即示例中的③处。
  3. 两个调度参数间用一个空格分隔,即示例中的④处。


四、常见的使用场景

1、场景一:如何处理表的分区格式中需要空格的情况

解决方案:

(1)参数赋值区:使用两个自定义变量参数分别取年月日,时分秒datetime = $[yyyy-mm-dd] hour= $[hh24:miss]

(2)代码调用区:在代码中用空格拼接两个参数。

pt=${datetime} ${hour}

如果直接使用一个参数,也就是time①=②$yyymmdd③hh24:mi:ss]格式,等调度替换出来时,会发现中间加的这一个空格被默认的就被默认掉了。调度参数是不支持带空格的,所以如果要实现年月日时分秒钟带一个空格,需要用两个参数来做,一个参数取年月日,一个参数取十分秒,在代码里面用一个空格拼接两个参数,这样就可以实现代码中替换出来的值中带一个空格。

2、场景二:跨天调度参数替换

如何处理0点运行的实例,计算结果变为当天的23点,实际应当是前一天的23点的情况?

(1)问题描述:

在代码中表的分区为pt= ${datetime} ${hour} ,希望执行时获取上个小时的数据。使用两个自定义变量参数datetime= $[yyymmdd].hour= $[hh24-1/24]可以满足需求。但是0点运行的实例,计算结果会变成当天的23点,实际应当是前一天的23点。比如两点运行的任务,那天这样取还是当天小时往前取一个小时,那替换就是一,但是在0点时计算结果,因为天0点还是在当天,计算结果会变成当天的23点,那实际上取天时应该往前推一天才对,应该是前一天的23点。

(2)解决方法:

可以修改参数的计算公式,修改datetime为$yyymmdd-1/24] , hour的计算公式仍然是$[hh24-1/24]。计算结果如下,即可满足需求:

  1. 如果一个实例的定时时间是2015-10-27 00:00:00 ,减1小时便是昨天,则$yyymmdd-1/24]的值是20151026. $[hh24-1/24]的值是23。
  2. 如果一个实例的定时时间为2015-10-27 01:00:00的实例,减1小时还是今天,则$yyymmdd-1/24]的值是20151027、$[hh24-1/24]的值是00。


五、实操演练

1、针对两个参数,看一下替换情况。bizdate取的是业务时间,cyc time取的是任务的定时时间,任务的定时时间实际上就是具体时间,假设现在是00:00,十分秒应该是00:00,查看它的参数替换情况,选择开发环境冒烟测试,测试这两个参数的替换情况,这两个参数是代码中直接使用,不需要再赋值,选择业务时间假设是10月1号。

1.开放环境冒烟测试,选择的业务时间,十月1号,bdp.system.bizdate的取值是2020 10月1号,bdp.system.cyctime 的取值是2020年10月2号,年月日是10月2号,小时分钟是0.00。查看它实际运行的结果,这是第一段sql。这替换出来的值是刚选择的业务时间,没有问题,取 cyctime 是10月2号0.00,这里也没有问题,cyctime取的是具体时间,现在再修改任务的定时时间,再看它的参数替换是否符合场景。这时 cyctime 的参数取值应该是1:00,已经切换出来,是2020年10月2号1点00分00秒。dataworks 任务的定时时间和实际运行时间可能不是完全一致的,任务定时时间和实际运行时间可能是存在差异的。定时时间可以理解为任务的理想时间点,运行的理想时间点,但是可能会由于上游任务执行的晚,或者是当前项目没有资源等待资源,导致任务开始实际运行的时间延迟了。需要注意的是取任务定时时间,值是不会变的,它是跟随实例它是绝对的,如果它是当天的第一个实例,它的定时时间在实例生成时就已经固定了,取任务定时时间时,它的值也是固定的,不会跟随任务实际运行时间改变。

2.再查看自定义参数大括号的格式,先直接运行,同样取十月十号看它的取值是什么样的。当前取了6个参数,1个是 bizdate,1个是年月日整个参数,一个是年份月份和天单独取的

image.png

3.同样选择10月1号。如果是自定义参数,直接看它的参数有没有被正常替换。刚取的bizdate 等于20201001,值没有问题,bizdate和${yyyy-mm-dd}里的取值是一样的,所以也可以看到它俩的取值是一样的。第三个参数是直接取了年份,第二个取的是月份,第三个取的是天,这三个也是没有问题的。如果往前取一年,往前取一个月,往前取一天,如果要取年月这样往前多少年多少月,那一定要使用使用大括号的格式,直接看上面。业务时间选择的是2020年10月1号,那现在年份往前取了一年,月份也往前取了一个月,天也是上个月末这样看时间跨天的情况也是没有问题的。再查看中括号的格式,中括号这里同样的变量名使用 cyctime,但是 cyctime 一定要记得在右侧这里给它再赋值 cyctime,它的取值跟$[yyyy-mm-dd]加上小时是一样的,它可以取到具体的时分秒。第二个参数单独取天,第三个参数取的是小时分钟和秒,先单独的执行,不加任何的加减场景,同样取10月1号,可以看到 cyctime业务时间选择的10月1号,参数替换取的是11月2号,定时时间,分钟是29分,参数替换没有问题,这里多了[yyyy-mm-dd]取的是10月2号00:29:00,没有问题,同样往前取,可以往前取一个小时。单独看参数的替换情况,修改了代码变量时,一定要先保存提交,再使用开发环境冒烟测试,现在是00:29分任务定时时间,业务时间选择10月1号,往前取一个小时应该是23点多少分

4.看具体的场景,赋值中需要带空格的情况。调度参数,如果加上空格是错误的示例,观察现象,一定要记得保存提交再使用开发环境冒烟测试。虽然在变量中加了一个空格,但是替换出来的值是没有空格的,已经被替换掉了。如果需要在代码中添加一个空格,就是在赋值时添加一个空格,需要用两个参数做。分两个参数分别取天和小时,中间用一个空格格开,代码里面加一个空格,看它的替换情况,同样选择10月1号加入空格重新保存提交,再测试。

image.png

5.变量中间是带了一个空格,参数替换也正常。看下一个场景,跨天参数替换的情况,需要处理零点运行实例,替换为当天23点,但实际上是要取前一天的23点。取当天小时候往前取一个小时,保存提交

6.同样选择业务时间10月1号

7.现在看它的定时时间是在1:00,年月日、参数替换没有问题,定时时间10月2号,任务的小时是零点,任务定时时间是一点,往前取一个小时是零点,没有问题,如果任务的定时时间是00:00,再看取值会有什么问题。

image.png

8。同样选择10月1号,预期要选择前一天23点,现在参数替换仍然是10月2号小时已经替换为23点,那这样是有问题的,因为要取的是10月1号替换为10月1号才对。所以要往前减一个小时,再看它的替换情况

9.现在预期应该是0点时,参数取的是前一天,也就是10月1号小时取的是23点。同样选择业务时间10月1号。参数替换已经正常,也就是选择业务时间10月1号时多了中括号取值天应该是取的是11月2号,那如果11月2号凌晨第一个实例要前一天23点那个小时的分区,那需要在天维度的取值这里往前取一个小时,才能够正常的取到,那天往前取了一个小时,定时时间是一点两点,天往前取一个小时也是不会受到影响的,所以跨天调度参数的问题也解决了。

image.png

10.看运行和高级运行的区别,新建一个节点,定义变量 select '$(var)';,在右侧给它赋值。选择运行第一次运行时它会弹框让给代码中的var变量赋值,赋值为1,选择运行运行没有问题参数也被替换成1.

11.修改变量名再保存,再运行,查看参数能否被替换,可以看到参数不会被替换

12.var1没有被替换掉,因为点运行时,系统内部传参数时传的是var等于1,也就是第一次给它赋值的情况。如果修改了代码中的变量,那一定要再使用高级运行,给var1新变量重新赋值,这时代码中新变量才能被正确的替换掉。第一次点击运行时,它让选择任务需要运行在哪个资源组上,这个逻辑也是适用于资源组的,如果需要修改任务执行资源组,同样要使用高级运行,重新给重新选择资源组,选给代码中的变量重新赋值。

相关实践学习
基于MaxCompute的热门话题分析
本实验围绕社交用户发布的文章做了详尽的分析,通过分析能得到用户群体年龄分布,性别分布,地理位置分布,以及热门话题的热度。
一站式大数据开发治理平台DataWorks初级课程
DataWorks 从 2009 年开始,十ー年里一直支持阿里巴巴集团内部数据中台的建设,2019 年双 11 稳定支撑每日千万级的任务调度。每天阿里巴巴内部有数万名数据和算法工程师正在使用DataWorks,承了阿里巴巴 99%的据业务构建。本课程主要介绍了阿里巴巴大数据技术发展历程与 DataWorks 几大模块的基本能力。 课程目标  通过讲师的详细讲解与实际演示,学员可以一边学习一边进行实际操作,可以深入了解DataWorks各大模块的使用方式和具体功能,让学员对DataWorks数据集成、开发、分析、运维、安全、治理等方面有深刻的了解,加深对阿里云大数据产品体系的理解与认识。 适合人群  企业数据仓库开发人员  大数据平台开发人员  数据分析师  大数据运维人员  对于大数据平台、数据中台产品感兴趣的开发者
相关文章
|
3月前
|
SQL DataWorks 安全
DataWorks产品使用合集之如何实现分钟级调度
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
SQL DataWorks 安全
DataWorks产品使用合集之调度资源组与集成资源内部的实例如何进行共用
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
分布式计算 DataWorks 监控
DataWorks产品使用合集之怎么设置参数获取上个月最后一天
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 DataWorks 安全
DataWorks产品使用合集之怎么配置定时调度任务
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 分布式计算 DataWorks
DataWorks产品使用合集之怎么查看表dqc的配置
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之怎么配置跨业务流程的调度依赖
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
数据采集 DataWorks 监控
DataWorks产品使用合集之怎么使用工作空间参数
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
分布式计算 DataWorks 安全
DataWorks产品使用合集之调度任务时怎么指定时间函数格式
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
3月前
|
DataWorks Kubernetes 大数据
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
飞天大数据平台产品问题之DataWorks提供的商业化服务如何解决
|
3月前
|
运维 DataWorks 监控
DataWorks产品使用合集之如何自定义UDTF
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。