当需要将上游节点的查询或输出结果传递给下游节点时,可通过赋值节点实现。赋值节点支持 MaxCompute SQL、SHELL 和 Python 三种语言,会自动将最后一条查询或输出结果赋值给节点的输出参数(outputs),当下游节点依赖该赋值节点时,可通过添加节点输入参数的方式,在节点代码中获取outputs
的结果集。您可参考本文使用赋值节点进行节点参数的上下游传递。
前提条件
(可选)RAM账号添加至对应空间。进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发或空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员。
对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组。
注意事项
仅标准版及以上版本的DataWorks,才可使用赋值节点和赋值参数功能。如需购买DataWorks标准版及以上版本,请参见购买指引。
注意事项 | 相关说明 |
赋值节点功能限制 |
|
赋值参数说明 | 部分节点(如EMR Hive、EMR Spark SQL、MaxCompute Script、Hologres SQL、AnalyticDB for PostgreSQL、Click House SQL和MySQL节点)可通过节点上下文的赋值参数实现与赋值节点相同的效果。使用时需在节点中添加赋值参数,操作方式与赋值节点一致。 |
获取结果集 | 为确保下游节点能正确获取赋值结果,请在配置完成后,一并运行赋值节点与下游节点,以确保数据正常传递。 说明
|
步骤一:定义赋值节点输出结果集
赋值节点目前支持的语言有MaxCompute SQL、Python、Shell语言,您在创建赋值节点后,可通过赋值节点编辑页面右下角图标进行切换代码语言,并开发定义相关类型的输出结果。
MaxCompute SQL类型输出结果
选择配置MaxCompute SQL类型输出结果时,需先为工作空间绑定MaxCompute计算资源,并在节点编辑页面右侧的调度配置中配置MaxCompute计算资源信息,然后进入赋值节点编辑页面进行脚本代码开发。
SELECT * FROM max_order WHERE dt='分区值' LIMIT 10;
说明max_order
为MaxCompute您所绑定的MaxCompute计算资源下的表名。Python类型输出结果
通过赋值节点编辑页面右下角
图标切换语言至
Python
后,在赋值节点编辑页面添加如下示例代码。print "Hello,World,01";
Shell类型输出结果
通过赋值节点编辑页面右下角
图标切换语言至
Shell
后,在赋值节点编辑页面添加如下示例代码。echo "Hello,World";
定义好赋值节点的输出结果集后,您可单击赋值节点编辑页右侧的调度配置,切换至节点上下文参数页签。即可查看赋值节点生成的节点输出参数outputs
。不同语言赋值节点的参数(outputs)输出格式不同,具体可参见下表:
赋值语言 | outputs参数取值 | outputs参数格式 | outputs参数大小限制 |
MaxCompute SQL | 最后一行SELECT语句的输出作为赋值参数,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果作为一个二维数组传递至下游。 | 传递值最大为2MB。如果赋值语句的输出结果超过该限制,赋值节点会运行失败。 |
Python | 最后一行PRINT语句的输出,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 | |
SHELL | 最后一行ECHO语句的数据,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 |
步骤二:获取赋值节点输出结果集
在定义好赋值节点的输出结果集后,您可以在其他节点获取赋值节点输出的结果集。本文以Shell节点为例为您演示如何获取赋值节点结果集信息。
配置引用结果集
单击节点编辑页右侧的调度配置,单击
,进入新增节点输入参数页面。在选择上游节点的输出参数列表中将上游赋值节点的节点输出参数
outputs
绑定为当前Shell节点的节点输入参数,并自定义参数名称(本文以para
为例)。说明将赋值节点的节点输出参数绑定为目标节点的节点输入参数后,目标节点会自动依赖该赋值节点。
读取结果集数据
完成参数配置后,即可按照Shell节点的参数使用规范获取不同赋值语言输出的结果集信息。下面代码中的参数para
是您在当前Shell节点中定义的节点输入参数对应的参数名称。
获取MaxCompute SQL语言输出结果集:
echo '${para}'; echo '取上游sql节点输出第1行数据'${para[0]}; echo '取上游sql节点输出第2行数据'${para[1]}; echo '取上游sql节点输出第1行第2个字段'${para[0][1]}; echo '取上游sql节点输出第2行第3个字段'${para[1][2]};
获取Python语言输出结果集:
echo '这是上游python节点的输出'${para}; echo '取上游python节点输出的第1个数据'${para[0]}; echo '取上游python节点输出的第2个数据'${para[1]};
获取Shell语言输出结果集:
echo '这是上游shell节点的输出'${para}; echo '取上游shell节点输出的第1个数据'${para[0]}; echo '取上游shell节点输出的第2个数据'${para[1]};