8.DataWorks 赋值-分支-归并-循环节点(一)|学习笔记

简介: 快速学习8.DataWorks 赋值-分支-归并-循环节点

开发者学堂课程【DataWorks 一站式大数据开发治理平台精品课程:8.DataWorks 赋值-分支-归并-循环节点】与课程紧密联系,让用户快速学习知识

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


8.DataWorks 赋值-分支-归并-循环节点(一)

内容介绍:

一、赋值节点

二、分支节点

三、归并节点

四、循环节点

五、常见问题

六、控制赋值节点应用

一、赋值节点

赋值节点支持 ODPS SQL、SHELL 和 Python 三种赋值语言 ,且赋值节点自带outputs 输出。可以结合节点上下文,将赋值节点的最后一条查询结果作为下游节点的入参进行传递。Python 和 SHELL 的输出会基于逗号(,)分割为一维数组。ODPS SQL将输出结果作为一个二维数组传递至下游。转义符\可以对分隔符( , )进行转义,使其数据不因逗号而被分割。

24.png

上图可以看出效果,一个ABC的 print,右边的结果是第一行输出,它是ab作为一行,第二行是一个c。

二、分支节点

分支节点是 DataStudio 中提供的逻辑控制系列节点中的一类。它可以定义分支逻辑和在不同逻辑条件时下游分支走向。一般会结合赋值节点一起使用。赋值节点传入一个参数,分支节点中根据设置的分支条件判断输入的参数是走a分支还是走b分支,在分支条件中进行判断。  


三、归并节点

1、归并节点也是 DataStudio 中提供的逻辑控制系列节点中的一类 ,可以对上游节点的运行状态进行归并,用来解决分支节点下游节点的依赖挂载和运行触发问题。 2、目前归并节点也可以直接对上游任务进行判断。不管它成功或者失败,通过归并节点的一个判断,继续运行下游。

3、注意:分支未运行只适用于上游是分支节点,下游运行状态为跳过时的判断,而上游为灰色未运行状态时,并不会进行逻辑判断。  


四、循环节点

1、循环节点的循环次数控制,是由上游赋值节点实际输出的一维数组元素的个数控制,以此来达到循环的目的。

2、for-each 节点的使用有限制如下:

(1)您需要购买 DataWorks 标准版及以上版本,才可以使用 for each 节点。

(2) for-each 节点最多可以循环128次, 一旦超过便会报错。比如赋值节点输出130的结果集,下游循环节点去循环,它超过了128次,循环节点它就会报错失败。

(3)如果for-each节点内部需要进行逻辑判断和结果遍历,您可以使用分支节点。但是在遍历节点内部,分支节点需要和归并节点同时使用。这是因为分支节点下游会有一个分支是跳过的状态,所以它必须要和联合归并节点去将跳过状态那个分支投通过归并节点,让下游变成一个正常的状态,继续循环运行。

(4)for-each 节点不支持在 DataStudio 界面直接运行。您需要提交和发布节点后,在运维中心页面配合赋值节点运行。如果是标准项目的版本,就可以先将任务提交之后,进入运维中心的开发环境去测试运行,如果只是简单模式的项目,就只能提交到生产环境的运维中心去测试运行。

3、for-each 节点支持以下四种环境变量:

(1)${dag.foreach.current} :当前遍历到的数据行。

(2)${dag.loopDataArray} :输入的数据集。

(3)${dag.offset} :偏移量。

(4)${dag.loopTimes} :当前循环次数,值为${dag.offset}+1。

循环节点的内部,它也支持一种复杂的循环,比如看到一个复杂的业务流程,比如从star节点开始,第一个节点是一个同步任务的节点,同步任务节点输出,进入循环,对任务进行一个归并状态。如果它上游是一个分支或者其他节点,如果上游失败了,或者报错异常,反正就是一个失败状态,它下游进行归并,归并上游的一个状态,下游继续运行下去,继续循环起来,一个通过赋值节点将输出参数存入到一个分支节点中,走不同的一个分支链路,最后再进行一个归并的控制,通过上游的一个赋值节点输入控制它的一个循环次数。在整个循环节点的外部,它还会挂载一个一个赋值节点,赋值节点的输出控制一个循环的一个次数。

4、从赋值下来,走分支,分成两个不同分支的一个链路。下面有一个归并节点和一个直接挂在sql节点一个测试。通过一个归并节点上游判断上游两个任务的运行状态如何,它可以直接对两个任务的运行判断,比如判断节点失败了的状态会继续运行,如果是两个都成功,那就肯定都运行了,如果其中一个失败,那就会根据归并条件的判断,不是且或者是或的状态去判断,上游两个任务的一个情况。


五、常见问题

1、分支下的节点,怎么会是直接跳过的状态,并没有直接运行,日志只显示:It's set condition-skip by task(706803301668-分支b)这是因为该节点上游是分支节点的下游分支,且并没有挂归并节点,上游有被分支跳过的状态,所以其下游也均是被跳过运行,直接显示成功。有归并节点存在时,并不会有这种情况。

2、赋值节点输出为空的情况,下游分支节点因为取不到赋值节点传入的参数。日志中可以看到一个处理输入参数替换的错误。

3、父节点依赖已经挂上赋值节点,但在上下文传参那为什么有时会获取不到赋值节点的输出?这种情况,只需将上游赋值节点,先保存提交下,下游“本节点输入参数”, 就能下拉获取到相应的参数。

4、因为环境的问题,循环节点不支持在界面运行,需要提交到运维中心后再测试运行,或者如果是标准项目可以提交后,进入开发环境运维中心测试执行。

相关实践学习
基于Hologres轻量实时的高性能OLAP分析
本教程基于GitHub Archive公开数据集,通过DataWorks将GitHub中的项⽬、行为等20多种事件类型数据实时采集至Hologres进行分析,同时使用DataV内置模板,快速搭建实时可视化数据大屏,从开发者、项⽬、编程语⾔等多个维度了解GitHub实时数据变化情况。
相关文章
|
SQL 分布式计算 MaxCompute
ODPS开发大全:入门篇(2)
ODPS开发大全:入门篇
839 14
|
分布式计算 DataWorks MaxCompute
DataWorks产品使用合集之怎么更改ODPS表的生命周期为永久
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
|
SQL DataWorks NoSQL
DataWorks常见问题之如何自定义日期参数
DataWorks是阿里云提供的一站式大数据开发与管理平台,支持数据集成、数据开发、数据治理等功能;在本汇总中,我们梳理了DataWorks产品在使用过程中经常遇到的问题及解答,以助用户在数据处理和分析工作中提高效率,降低难度。
518 0
|
SQL JSON 分布式计算
DataWorks产品使用合集之DataWorks一键maxcompute数据同步的操作步骤是什么
DataWorks作为一站式的数据开发与治理平台,提供了从数据采集、清洗、开发、调度、服务化、质量监控到安全管理的全套解决方案,帮助企业构建高效、规范、安全的大数据处理体系。以下是对DataWorks产品使用合集的概述,涵盖数据处理的各个环节。
388 1
|
SQL 存储 分布式计算
【深入MaxCompute】人力家:用MaxCompute 事务表2.0主键模型去重数据持续降本增效
MaxCompute新增Transaction Table2.0(下文简称事务表2.0)表类型在2023年6月27日开始邀测,支持基于事务表2.0实现近实时的增全量一体的数据存储、计算解决方案。
1051 1
|
XML 数据库 Android开发
[Android]搜索框SearchView
[Android]搜索框SearchView
355 0
|
运维 DataWorks
DataWorks:For-Each遍历节点并发执行解决方案
为你介绍如何突破For-Each遍历节点128次上限,并实现并发取数执行。
602 1
|
网络协议 算法 Java
gRPC 客户端调用服务端需要连接池吗?
进行通信,如果是外部通信的话,会提供 https 接口文档
277 0
|
SQL 运维 分布式计算
7.DataWorks 赋值节点案例演示|学习笔记
快速学习7.DataWorks赋值节点案例演示
7.DataWorks 赋值节点案例演示|学习笔记
|
人工智能 算法 BI
基于参考辐射源/定标的校正算法(一)
一种基于场景的非均匀校正算法,补充一下更加简单,容易工程化实现的基于参考辐射源的校正算法,也叫基于定标的校正算法。
398 0
基于参考辐射源/定标的校正算法(一)