简介: DataWorks功能实践系列,帮助您解析业务实现过程中的痛点,提高业务功能使用效率!
往期回顾:
- DataWorks 功能实践速览01期——数据同步解决方案:为您介绍不同场景下可选的数据同步方案。
- DataWorks 功能实践速览02期——独享数据集成资源组:为您介绍进行数据同步时,可使用的资源组与网络连通方案、注意事项。
- DataWorks 功能实践速览03期——生产开发环境隔离:为您介绍DataWorks通过标准模式提供开发环境与生产环境隔离及不同环境的权限要求。
通过往期的介绍,您已经了解到在DataWorks上进行任务运行的最关键的几个知识点,接下来为您逐步介绍如何通过DataWorks的任务节点实现最常见的数据开发场景。本期为您介绍如何在DataWorks上实现参数透传,即把上游任务的参数透传到下游任务。
功能推荐:赋值节点与参数节点
在阿里云DataWorks中,一个数据开发任务最终是拆解为多个节点任务,并通过设置节点间上下游关系最终形成一个完整的数据开发业务流程,如下图所示。
以上为一个简单的示例,在实际应用时,我们通常会碰到这样的情况,拆解出来的上游节点任务会生成一些参数,或上游节点的运行结果,需要在下游节点任务中应用到,这就需要数据开发任务能够实现参数/节点运行结果在各个节点间的透传,根据不同的透传需求,DataWorks提供了两种特殊节点可以实现:赋值节点与参数节点。
Part1:赋值节点 - 实现任务结果透传
当您需要将上游节点任务的结果提供给下游节点使用时,您可使用赋值节点,实现任务结果在节点间传递。赋值节点支持ODPS SQL、SHELL和Python三种赋值语言,且根据赋值规则,自动为您添加赋值参数(outputs参数),便于其他节点引用。
使用赋值节点进行透传参数时,需关注以下三个要点。
1.1赋值节点与上下游节点间的依赖关系
如上图所示,使用赋值节点透传参数时:
- 赋值节点(fuzhi\_python、fuzhi\_sql、fuzhi\_shell)需作为引用赋值节点参数节点(down\_compare)的上游节点,下游节点需要与赋值节点设置直接依赖关系(赋值节点为下游节点的一层父节点)。
- 赋值节点作为上游与其它节点配合使用时,请务必先提交赋值节点,以便下游节点在配置时可以解析出参数。
1.2赋值节点与下游节点的上下文参数透传关系
如下图所示,通过赋值节点与引用节点的调度配置中的上下文参数配置,形成参数透传引用关系:
- 赋值节点(fuzhi\_python、fuzhi\_sql、fuzhi\_shell)需将待赋值给下游的参数添加为节点上下文中的本节点输出参数。
- 下游引用赋值参数的节点需将待引用的赋值参数添加为节点上下文中的本节点输入参数。
说明:
- 赋值节点参数传递只支持传递给一层子节点,不支持跨节点传递。
1.3赋值语言与赋值结果
引用赋值节点结果时,赋值节点的参数输出格式与下游节点引用参数方式有关系,不同语言的赋值参数(outputs参数)赋值说明如下。
赋值语言 | outputs参数取值 | outputs参数格式 | outputs参数大小限制 |
ODPS SQL | 最后一行SELECT语句的输出作为赋值参数,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果作为一个二维数组传递至下游。 | 传递值最大为2 MB。如果赋值语句的输出结果超过该限制,赋值节点会运行失败。 |
SHELL | 最后一行ECHO语句的数据,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 | |
Python | 最后一行PRINT语句的输出,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 |
对比项 | 赋值节点 | 参数节点 |
透传场景 | 节点运行结果透传 | 节点参数透传 |
透传限制 | 仅能透传至一层子节点,不支持跨节点透传 | 可跨节点透传 |
节点属性 | 一种任务节点,节点中运行赋值任务,支持<span>ODPS SQL、SHELL和Python三种赋值语言</span> | 本质上是一种虚拟节点,不会运行任务产生数据 |
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。