赋值节点

当需要将上游节点的查询或输出结果传递给下游节点时,可通过赋值节点实现。赋值节点支持 MaxCompute SQL、SHELL 和 Python 三种语言,会自动将最后一条查询或输出结果赋值给节点的输出参数(outputs),当下游节点依赖该赋值节点时,可通过添加节点输入参数的方式,在节点代码中获取outputs的结果集。您可参考本文使用赋值节点进行节点参数的上下游传递。

前提条件

  • (可选)RAM账号添加至对应空间。进行任务开发的RAM账号已被添加至对应工作空间中,并具有开发空间管理员(权限较大,谨慎添加)角色权限。添加成员并授权,详情请参见为工作空间添加空间成员

  • 对应空间已绑定Serverless资源组。详情请参见:使用Serverless资源组

注意事项

仅标准版及以上版本的DataWorks,才可使用赋值节点和赋值参数功能。如需购买DataWorks标准版及以上版本,请参见购买指引

注意事项

相关说明

赋值节点功能限制

  • 赋值节点参数传递只支持传递给一层子节点,不支持跨节点传递。

  • 将赋值节点的节点输出参数绑定为目标节点的节点输入参数后,目标节点会自动依赖该赋值节点。

  • 赋值节点只能将最后一条查询或输出结果通过自带输出参数传递给下游。

  • 赋值节点的Python赋值语言使用的Python版本为Python 2.0

  • 赋值节点代码中不支持添加注释,添加注释可能导致运行结果有误。

赋值参数说明

部分节点(如EMR Hive、EMR Spark SQL、MaxCompute Script、Hologres SQL、AnalyticDB for PostgreSQL、Click House SQLMySQL节点)可通过节点上下文的赋值参数实现与赋值节点相同的效果。使用时需在节点中添加赋值参数,操作方式与赋值节点一致。

获取结果集

为确保下游节点能正确获取赋值结果,请在配置完成后,一并运行赋值节点与下游节点,以确保数据正常传递。

说明
  • 依赖赋值节点的下游节点均可获取赋值节点的查询结果(即结果集),无节点类型限制。

  • 若赋值节点的下游是遍历节点(for-each节点)或循环节点(do-while节点),您需前往运维中心执行相应任务,查看引用结果是否正确。

  • 赋值节点与遍历节点(for-each节点)或循环节点(do-while节点)结合使用的最佳实践,请参见for-each节点do-while节点

步骤一:定义赋值节点输出结果集

赋值节点目前支持的语言有MaxCompute SQL、Python、Shell语言,您在创建赋值节点后,可通过赋值节点编辑页面右下角image图标进行切换代码语言,并开发定义相关类型的输出结果。

  • MaxCompute SQL类型输出结果

    选择配置MaxCompute SQL类型输出结果时,需先为工作空间绑定MaxCompute计算资源,并在节点编辑页面右侧的调度配置中配置MaxCompute计算资源信息,然后进入赋值节点编辑页面进行脚本代码开发。

    SELECT * FROM max_order  WHERE dt='分区值' LIMIT 10;  
    说明

    max_orderMaxCompute您所绑定的MaxCompute计算资源下的表名。

  • Python类型输出结果

    通过赋值节点编辑页面右下角image图标切换语言至Python后,在赋值节点编辑页面添加如下示例代码。

    print "Hello,World,01";
  • Shell类型输出结果

    通过赋值节点编辑页面右下角image图标切换语言至Shell后,在赋值节点编辑页面添加如下示例代码。

    echo "Hello,World";

定义好赋值节点的输出结果集后,您可单击赋值节点编辑页右侧的调度配置,切换至节点上下文参数页签。即可查看赋值节点生成的节点输出参数outputs。不同语言赋值节点的参数(outputs)输出格式不同,具体可参见下表:

赋值语言

outputs参数取值

outputs参数格式

outputs参数大小限制

MaxCompute SQL

最后一行SELECT语句的输出作为赋值参数,添加为赋值节点的本节点输出参数,供其他节点引用。

将输出结果作为一个二维数组传递至下游。

传递值最大为2MB。如果赋值语句的输出结果超过该限制,赋值节点会运行失败。

Python

最后一行PRINT语句的输出,添加为赋值节点的本节点输出参数,供其他节点引用。

将输出结果基于逗号(,)分割为一维数组。

SHELL

最后一行ECHO语句的数据,添加为赋值节点的本节点输出参数,供其他节点引用。

将输出结果基于逗号(,)分割为一维数组。

步骤二:获取赋值节点输出结果集

在定义好赋值节点的输出结果集后,您可以在其他节点获取赋值节点输出的结果集。本文以Shell节点为例为您演示如何获取赋值节点结果集信息。

配置引用结果集

  1. 创建Shell节点

  2. 单击节点编辑页右侧的调度配置,单击节点上下文参数 > 节点输入参数 > 添加参数,进入新增节点输入参数页面。

  3. 选择上游节点的输出参数列表中将上游赋值节点的节点输出参数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]};

步骤三:节点发布与运维

  1. 完成调度配置后,即可将赋值节点和下游获取结果集的其他节点提交发布至生产环境,详情请参见:节点/工作流发布

  2. 发布完成后,可在运维中心 > 任务运维 > 周期任务运维 > 周期任务中查看已发布的周期任务,并对任务进行运维操作,详情请参见:运维中心入门