赋值节点
当您需要将上游节点任务的查询或输出结果提供给下游节点使用时,可通过赋值节点实现。赋值节点支持ODPS SQL、SHELL和Python2三种赋值语言,将节点最后一条查询或输出结果自动赋值给节点自带的输出参数(outputs),便于赋值节点的下游节点引用。您可结合节点上下文配置,参考本文使用赋值节点。
注意事项
部分节点可通过节点上下文中的赋值参数,达到与赋值节点相同的目的(例如,EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL、AnalyticDB for PostgreSQL和MySql节点),赋值参数的使用与赋值节点一致,添加赋值参数的操作,详情请参见配置节点上下文。
仅标准版及以上版本的DataWorks,才可使用赋值节点,以及在上述节点中使用赋值参数功能。购买DataWorks,请参见购买指引。
赋值节点参数传递只支持传递给一层子节点,不支持跨节点传递。
赋值节点只能将最后一条查询或输出结果通过自带输出参数传递给下游。
赋值节点的Python赋值语言使用的Python版本为Python 2.0。
赋值节点代码中不支持添加注释,添加注释可能导致运行结果有误。
为避免下游节点获取赋值节点的结果集有误,在下游节点引用赋值节点结果集后,您可提交下游节点及赋值节点至开发环境运维中心,测试引用结果是否正确。详情请参见测试获取的赋值节点结果集。
原理介绍
在DataWorks中,节点上下文参数可实现节点参数的上下游传递,赋值节点在此基础上,可将赋值节点最后一条查询结果传递给自带的输出参数(outputs),若下游节点依赖了赋值节点,则下游节点可通过添加输入参数的方式,在节点代码中获取赋值节点输出参数(outputs)的结果集(即上游赋值节点的查询结果)。
赋值节点自带的输出参数(outputs)不可修改,outputs取值由赋值节点最后一条查询或输出结果决定。
赋值节点下游获取赋值节点结果集(outputs)时,需要先直接依赖赋值节点(即赋值节点为下游节点的一层父节点),并在节点输入参数处添加赋值节点结果集。您可自定义赋值节点结果集在下游节点的参数名称,例如上图中命名为sql_inputs。
不同赋值语言的赋值节点,其结果集格式存在差异。赋值节点下游获取赋值节点结果集outputs时,需要根据outputs具体情况,以${参数名}的格式,使用一维数组或二维数组的方式在代码中获取赋值节点传递的结果集、或结果集中的指定数据。
赋值节点使用流程
配置赋值节点:定义outputs结果集。此阶段您需要选择赋值语言,以及确定最后一条查询或输出结果。
配置上下游依赖:获取赋值节点结果集的下游节点需提前依赖该赋值节点。
下游引用赋值节点结果集:下游节点可通过
方式获取赋值节点结果集,并通过${参数名}的方式在代码中获取赋值节点结果集。若要获取结果集中的指定数据,您需根据赋值节点的赋值语言,通过一维数组或二维数组的方式获取。测试获取的赋值节点结果集:下游节点引用赋值节点结果集后,您可提交下游节点及赋值节点至开发环境运维中心测试引用结果是否正确。
赋值节点创建入口
赋值节点输出格式
赋值节点支持ODPS SQL、SHELL和Python2三种赋值语言,使用不同赋值语言时,赋值节点的参数(outputs)输出格式不同,下游节点需要根据outputs的具体情况,以${参数名}的格式,使用一维数组或二维数组的方式在代码中获取赋值节点传递的结果集、或结果集中的指定数据。
赋值语言 | outputs参数取值 | outputs参数格式 | outputs参数大小限制 |
ODPS SQL | 最后一行SELECT语句的输出作为赋值参数,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果作为一个二维数组传递至下游。 | 传递值最大为2MB。如果赋值语句的输出结果超过该限制,赋值节点会运行失败。 |
SHELL | 最后一行ECHO语句的数据,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 | |
Python2 | 最后一行PRINT语句的输出,添加为赋值节点的本节点输出参数,供其他节点引用。 | 将输出结果基于逗号(,)分割为一维数组。 |
下游获取赋值节点结果集:应用示例一
本示例中,直接通过拉线,将start节点作为所有赋值节点的上游节点,down_compare节点作为所有赋值节点的下游节点,其中down_compare节点为Shell节点,以${参数名}的格式,使用一维数组或二维数组的方式,通过Shell节点分别输出上游赋值语言分别为ODPS SQL(fuzhi_sql)、Python(fuzhi_python)、Shell(fuzhi_shell)的结果集与结果集中的指定数据。
赋值节点(fuzhi_python、fuzhi_sql、fuzhi_shell):自带输出参数outputs。
下游节点(down_compare):下游节点设置赋值节点依赖关系后,将待引用的赋值参数添加为
,参数名可自定义。
具体过程请参照下文。
ODPS SQL赋值语言
以下以配置赋值语言为ODPS_SQL的赋值节点,并在down_compare节点中引用赋值参数为例,为您示意如何操作。
配置上游赋值节点。
在相应的业务流程下,双击打开赋值语言为ODPS SQL的赋值节点fuzhi_sql。
在代码编辑页面,选择赋值语言为ODPS_SQL,写入赋值代码。
例如:
select * from xc_dpe_e2.xc_rpt_user_info_d where dt='20191008' limit 10;
单击页面右侧的调度配置,查看节点上下文中的本节点输出参数。
赋值节点将代码的查询结果作为节点输出,赋值给赋值节点自带的输出参数outputs。
本示例赋值节点的查询结果如下。
则此查询结果作为一个二维数组,赋值给本节点输出参数中的outputs参数。
配置下游节点。
双击打开下游Shell节点down_compare。
在代码开发页面编写代码。
例如:
echo '${sql_inputs}'; echo '取上游sql节点输出第1行数据'${sql_inputs[0]}; echo '取上游sql节点输出第2行数据'${sql_inputs[1]}; echo '取上游sql节点输出第1行第2个字段'${sql_inputs[0][1]}; echo '取上游sql节点输出第2行第3个字段'${sql_inputs[1][2]};
单击页面右侧的调度配置,配置节点上下文中的本节点输入参数。
将fuzhi_sql节点的outputs参数添加为本节点输入参数,并命名为sql_inputs。
执行引用,查看引用结果。
单击工具栏中的
图标。
在警告对话框中,单击继续运行。
查看引用结果。
Python赋值语言
以下以配置赋值语言为Python2的赋值节点,并在down_compare节点中引用赋值参数为例,为您示意如何操作。
配置上游赋值节点。
在相应的业务流程下,双击打开赋值语言为Python2的上游节点fuzhi_python。
在代码编辑页面,选择赋值语言为Python2,写入赋值代码。
例如:
print "a,b,c";
单击页面右侧的调度配置,查看节点上下文中的本节点输出参数。
赋值节点将代码的查询结果作为节点输出,赋值给赋值节点自带的输出参数outputs。本示例的查询结果为a,b,c。
赋值语言为Python2时,查询结果将基于逗号(,)分割为一维数组,赋值给本节点输出参数中的outputs参数。
配置下游节点。
双击打开下游Shell节点down_compare。
在代码开发页面编写代码。
例如:
echo '这是上游python节点的输出'${python_inputs}; echo '取上游python节点输出的第1个数据'${python_inputs[0]}; echo '取上游python节点输出的第2个数据'${python_inputs[1]};
单击页面右侧的调度配置,配置节点上下文中的本节点输入参数。
将fuzhi_python节点的outputs参数添加为本节点输入参数,并命名为python_inputs。
执行引用,查看引用结果。
单击工具栏中的
图标。
在警告对话框中,单击继续运行。
查看引用结果。
SHELL赋值语言
以下以配置赋值语言为SHELL的赋值节点,并在down_compare节点中引用赋值参数为例,为您示意如何操作。
配置上游赋值节点。
在相应的业务流程下,双击打开赋值语言为SHELL的上游节点fuzhi_shell。
在代码编辑页面,选择赋值语言为SHELL,写入赋值代码。
例如:
echo "hello,world";
单击页面右侧的调度配置,查看节点上下文中的本节点输出参数。
赋值节点将代码的查询结果作为节点输出,赋值给赋值节点自带的输出参数outputs。本示例的查询结果为hello,world。
赋值语言为SHELL时,查询结果将基于逗号(,)分割为一维数组,赋值给本节点输出参数中的outputs参数。
配置下游节点。
双击打开下游Shell节点down_compare。
在代码开发页面编写代码。
例如:
echo '这是上游shell节点的输出'${shell_inputs}; echo '取上游shell节点输出的第1个数据'${shell_inputs[0]}; echo '取上游shell节点输出的第2个数据'${shell_inputs[1]};
单击页面右侧的调度配置,配置节点上下文中的本节点输入参数。
将fuzhi_shell节点的outputs参数添加为本节点输入参数,并命名为shell_inputs。
执行引用,查看引用结果。
单击工具栏中的
图标。
在警告对话框中,单击继续运行。
查看引用结果。
下游获取赋值节点结果集:应用示例二
不同语言的赋值参数(output)使用示例如下。
赋值语言 | outputs取值示例 | 赋值节点调度配置 | 下游节点调度配置 | 下游节点取值方式 | 下游节点返回结果 |
ODPS SQL | 示例查看fuzhi_tb表。
|
配置节点上下文,详情请参见配置节点上下文。 | 以上游赋值节点使用的赋值语言为ODPS SQL示例。 | 不同类型的下游节点取值如下:
| Hello |
SHELL | 示例语句为: | Data | |||
Python2 | 示例语句为: | Works! |
测试获取的赋值节点结果集
下游节点引用赋值节点结果集后,您可将下游节点及赋值节点提交至开发环境,并进入开发环境运维中心执行补数据操作,测试下游节点获取的赋值节点结果集数据是否正确。