DataWorks熟能生巧系列直播第三期:DataWorks调度参数配置

本文涉及的产品
DataWorks Serverless资源组免费试用套餐,300CU*H 3个月
简介: 本系列文章为DataWorks钉钉大群内熟能生巧系列直播的文字版,基本涵盖了直播中讲解到的大部分内容,大家可以学习或者Mark一下,有需要的时候再来回顾。本系列直播内容由DataWorks技术支持团队出品,运营团队整理,大部分是DataWorks用户实际使用中遇到的频率较高的问题,希望对大家有一定帮助。

本篇文章主要介绍了DataWorks调度参数的两种分类——系统内置变量和自定义参数,并介绍了各参数的使用和测试方式、注意事项和常见场景,实操演示了参数在各场景下的使用情况

分享人:DataWorks技术支持团队


我们在开发者社区学习路线里有发布一个DataWorks的学习路线,里面包含了入门讲解和熟能生巧系列的直播内容,大家可以去学习一下,需要主账号登陆学习哦:https://developer.aliyun.com/learning/course/81


一、调度参数的分类和使用


1、分类

调度参数分为系统内置变量和自定义参数两类,其区别在于能否在代码中直接使用。系统内置变量可以直接使用,不需要赋值。自定义参数需要在代码中自定义一个变量,然后在参数配置区给这个变量赋值,赋值支持四种形式的值:${…}$[…]、系统内置参数(例如$bizdate)、常量。

幻灯片3.PNG

2、系统参数

首先是系统参数配置,取值和格式如下,包括业务时间和定时时间,业务时间等于定时时间减一天,也就是业务时间在定时时间前一天。另外,业务时间精确到天,取值与自定义参数${yyyymmdd}一致,定时时间精确到时分秒取值与$[yyyymmddhh24miss]一致。

幻灯片6.PNG

3、自定义参数

然后是自定义参数。先看大括号格式 ${…},大括号格式可以精确到天。并且如果只需取到月份的话,需要用大括号形式。

幻灯片8.PNG

中括号格式如下图,是可以精确到时、分、秒的。

幻灯片9.PNG

然后是系统内置参数,用得比较多的是后面四个,$bizdate可以取到天,$cyctime可以取到时分秒,$gmtdate也精确到天,最后$bizmonth取到月份。

幻灯片10.PNG

4、使用示例

如下图,这里在代码中可以直接使用${bdp.system.cyctime}${bdp.system.bizdate},不用在右侧调度配置参数栏中赋值,而自定义参数需要在代码中自定义一个变量名,写作${var1}形式表示变量var1,右侧参数配置中需要用var1=$bizdate(系统变量形式)或者var1=${yyyymmdd} (自定义参数形式)来给var1变量赋值。另外,只有${bdp.system.cyctime}${bdp.system.bizdate}这两个系统内置变量可以直接在代码中使用,代码中是不能直接使用系统内置参数的(比如$bizdate),如果想要代码中使用${bizdate},仍然需要在右侧参数配置处赋值bizdate=$bizdate(和var1是一样的)。

image.png

ODPS SQL节点使用示例如下图。两个系统变量可以在代码中直接使用,而自定义参数需要先在代码中定义变量名,然后在右侧参数配置里给变量赋值。。

幻灯片12.PNG

数据集成节点使用示例如下,与ODPS SQL节点一致,注意如果在分区信息中配置pt=${bizdata},那需要在右侧参数配置中配置bizdata=$bizdate

幻灯片13.PNG

Shell节点使用示例也一样,但Shell节点中的变量不允许自定义命名,只能以$1$2$3…来命名,当参数达到10个后,需要用大括号,如${10}

幻灯片14.PNG

PyODPS节点也一样,但在使用自定义参数的时候,为了避免侵入代码,可以在全局变量中增加一个args的字典对象,调度参数可以在此获取。

幻灯片15.PNG

5、调度参数的注意事项

DataWorks有三种运行方式,运行、高级运行和开发环境冒烟测试,这里有几个需要注意的地方。

 

选择运行,只会在第一次弹框时给当前的变量赋值常量。如果修改了代码中变量名是不会继续弹框给新变量赋值。选择高级运行,每次都会弹框给当前变量赋值。如果您变更了代码中的变量,或者需要重新为变量赋值,请务必使用高级运行。运行和高级运行都只能给参数赋值常量,用于测试。如果您需要测试实际调度时的参数替换,请使用开发环境冒烟测试。

 

开发环境冒烟测试会根据业务时间替换调度参数;若修改了调度参数赋值,请务必先保存提交,再使用开发环境冒烟测试。

幻灯片17.PNG

需要注意的是参数赋值语句中,空格仅用于分离多条赋值语句,即多个自定义变量赋值语句可以用空格分离(下图4处),但单个赋值语句内不支持 使用空格(下图123处)。另外,大括号可以取任务的业务时间,最小粒度是天,中括号取定时时间,可以精确到时分秒。

幻灯片18.PNG


6、使用调度参数的常见场景

场景一:如何处理表的分区格式中需要空格的情况。如果要在时间中带一个空格,需要用两个参数来做,一个参数取年月日,一个参数取时分秒,然后在代码里用一个空格去拼接两个参数,这样就可以实现替换的值中带一个空格。

幻灯片20.PNG

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

 

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

 

问题描述:

在代码中表的分区为pt=${datetime} ${hour},希望执行时获取上个小时的数据。使用两个自定义变量参数datetime=$[yyyymmdd]hour=$[hh24-1/24]可以满足需求。但是0点运行的实例,计算结果会变成当天的23点,实际应当是前一天的23点。

 

解决方法:

 

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

如果一个实例的定时时间是2015-10-27 00:00:00,减1小时便是昨天,则$[yyyymmdd-1/24]的值是20151026$[hh24-1/24]的值是23

如果一个实例的定时时间为2015-10-27 01:00:00的实例,减1小时还是今天,则$[yyyymmdd-1/24]的值是20151027$[hh24-1/24]的值是0

幻灯片21.PNG

二、实操演练


1、内置参数

先针对两个参数来看它的替换情况,bizdate是业务时间,cyctime是定时时间,也就是具体时间。我们选择开发环境冒烟测试来看这两个参数的替换情况。每次修改完务必先保存、提交,再点击开发环境冒烟测试。

image.png

我们选择业务时间假设是101号,那bdp.system.bizdate的取值应该是2020101号,那bdp.system.cyctime的取值应该是2020102号,它的小时分钟应该全是0。接着我们看一下它实际运行的结果,如下图,冒烟测试后日志中可以看到替换的值,业务时间20201001没有问题。

image.png

然后cyctime的参数值为20201002000000。替换出来也是对的

image.png


2、自定义参数大括号格式

接下来看一下自定义参数大括号的这种格式。当前取了5个参数,bizdate、年月日、年份、月份和天,业务日期还是选择2020101号。

image.png

如下图,冒烟测试后日志中可以看到bizdate等于20201001var1取年月日,值和bizdate一致,var2取了年份,var3取月份,var4取日期,取值都没有问题。

image.png

接下来尝试往前取一年,往前取一个月和往前取一天。如果要往前取多少年多少月,那一定要使用大括号的这种格式。可以看到参数赋值这里都减了1

image.png

如下图,冒烟测试后日志中可以看到,bizdate依旧是20201001,但是现在年份往前取了一年变成2019,月份和天也提前了,成了931日,取值也没问题。

image.png


3、自定义参数中括号格式

然后看下中括号的这种格式,参数有cyctime、年月日、时分秒、小时和分钟。因为中括号形式能取到时分秒,所以用cyctime来做示例,这里cyctime也是个变量,和bizdate一样,需要赋值。这里定时时间我们选029分。

image.png

image.png

保存、提交、开发环境冒烟测试完成后打开日志来查看下,cyctime20201002002900,也就是202010202900秒,是没问题的。另外var2的年月日、var3的时分秒、var4的小时和var5的分钟替换值也都没问题。

image.png

然后单独测试下往前取一个小时。现在的任务定时时间是0:29,业务时间是101号,那么往前取一个小时应该是23点。再次提醒,修改代码变量的时候一定要先保存提交,然后再去使用开发环境冒烟测试。

image.png

替换出来后var4的值是23,小时是23点,没问题。

image.png


4、业务场景——赋值中带空格

我们现在把空格加上,参数赋值var=[yyyymmdd hh24miss],尝试将年月日和时分秒用空格分开,看看是什么情况。

image.png

测试日志中可以看到,虽然在变量赋值语句中加了一个空格,但是替换出来的值是没有空格的。

image.png

如果要在赋值的时候添加一个空格,就需要用两个参数来做。这个场景先分成两个参数,分别取年月日和时分秒,中间用一个空格隔开,然后代码里面也要加一个空格。

image.png

可以看到代码语句select '${var1}' '${var2}'这里的变量var1和var2中间是带了一个空格的,参数替换也正常,分别是年月日20201002和时分秒000400

image.png

image.png


5、业务场景——跨天调度参数替换

处理0点的运行实例,要取前一天的23点,但它却会替换为当天的23点。比如这里选择业务时间为101号,定时时间为0点,那么实际正常结果定时时间出来应该是1020点,然后再往前减1个小时,就应该是10123点。

image.png

image.png

但是测试结果日志里可以看到这里替换成了10223点,这个结果是错的。

image.png

这个时候我们可以修改成datetime=[yyyymmdd-1/24],即日期也往前减一个小时。

image.png

这时结果是20201001 23,即10123点,是正确的取值了。

image.png


6、运行与高级运行区别

首先是“运行”功能,新建一个SQL节点,代码中写上select ‘${var}’

image.png

然后点击运行,第一次运行的时候会有弹窗,可以为代码中的var赋值,这里赋值为1,点确定后点击运行。

image.png

image.png

这里运行没有问题,参数var也替换为了1

image.png

现在把变量名修改一下,改为var1,然后再保存、运行。

image.png

此时因为不是第一次运行,不会再弹框为变量赋值,会直接弹出运行框。

image.png

可以看到运行日志中var1参数没有替换。

image.png

所以如果修改了代码中的变量,就一定要使用高级运行给var1这个新变量重新赋值。

image.png

image.png

这样代码中的新变量var1才能被正确地替换掉。

image.png

另外,如果需要修改调度资源组,也是需要使用高级运行重新选择资源组,和参数赋值是同一个界面。


 以上就是本次分享的全部内容了,有问题需要解答的同学可以扫码加一下我们的钉钉大群,群里有直播回放可以观看。

感谢大家的关注!

DataWorks部门主群二维码.JPG





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

相关产品

  • 大数据开发治理平台 DataWorks