赋值节点支持ODPS SQL、SHELL和Python三种赋值语言,且赋值节点自带outputs输出。您可以结合节点上下文,将赋值节点的最后一条查询结果作为下游节点的入参进行传递。

前提条件

您需要购买DataWorks标准版及以上版本,才可以使用赋值节点。

背景信息

华东2(上海)和华南1(深圳)地域支持EMR Hive、EMR Spark SQL、ODPS Script、Hologres SQL和AnalyticDB for PostgreSQL节点,通过在调度配置中手动添加赋值参数的方式向下游传递参数。详情请参见节点上下文
不同语言的outputs参数赋值说明如下:
  • outputs参数的取值只取最后一行代码的输出结果:
    • 赋值语言为ODPS SQL的赋值节点中,最后一行SELECT语句的输出。
    • 赋值语言为SHELL的赋值节点中,最后一行ECHO语句的数据。
    • 赋值语言为Python的赋值节点中,最后一行PRINT语句的输出。
  • outputs参数的传递值最大为2 MB。如果赋值语句的输出结果超过该限制,赋值节点会运行失败。
说明
  • Python和SHELL的输出会基于逗号(,)分割为一维数组。ODPS SQL将输出结果作为一个二维数组传递至下游。
  • 赋值节点作为上游与其它节点配合使用时,请务必先提交赋值节点,以便下游节点在配置时可以解析出参数。

创建赋值节点

  1. 登录DataWorks控制台
  2. 在左侧导航栏,单击工作空间列表
  3. 选择工作空间所在地域后,单击相应工作空间后的进入数据开发
  4. 鼠标悬停至新建图标,单击通用 > 赋值节点
    您也可以找到相应的业务流程,右键单击通用,选择新建 > 赋值节点
  5. 新建节点对话框中,输入节点名称,并选择目标文件夹
    注意 节点名称必须是大小写字母、中文、数字、下划线(_)以及小数点(.),且不能超过128个字符。

    本文以在赋值节点取值对比_shell节点中,分别输出赋值节点使用Python、ODPS SQL和SHELL语言编辑的最后一行代码输出结果为例,为您介绍赋值节点如何结合节点上下文实现上下游参数传递。

    您需要新建三个不同语言的赋值节点(Python、ODPS SQL和SHELL)后,设置其依赖关系,下游才能引用上游传递的参数。业务流程的详情请参见管理业务流程依赖关系
  6. 单击提交

下游引用赋值节点(ODPS SQL)最后一条查询结果的场景示例

  1. 在相应的业务流程下,双击打开赋值语言为ODPS SQL的上游节点fuzhi_sql
  2. 单击编辑页面右侧的调度配置
  3. 配置上游节点。
    赋值节点将该表的查询结果作为节点输出,赋值给赋值节点自带的输出参数outputs上游节点
  4. 双击打开赋值语言为SHELL的下游节点赋值节点取值对比_shell
  5. 单击编辑页面右侧的调度配置,配置下游节点。
    下游节点依赖赋值节点fuzhi_python,引用上游赋值节点fuzhi_sql自带的输出outputs作为下游节点的输入,并命名为sql_inputs
    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]};
  6. 单击工具栏中的运行图标。
  7. 警告对话框中,单击继续运行
  8. 查看结果。

下游引用赋值节点(Python)输出示例

  1. 在相应的业务流程下,双击打开赋值语言为Python的上游节点fuzhi_python
  2. 单击编辑页面右侧的调度配置
  3. 配置上游节点。
    赋值节点使用赋值语言Python,赋值打印的结果a,b,c给赋值节点自带的输出参数outputsPython
  4. 双击打开赋值语言为SHELL的下游节点赋值节点取值对比_shell
  5. 单击编辑页面右侧的调度配置,配置下游节点。
    下游节点依赖赋值节点fuzhi_python,引用上游赋值节点fuzhi_python自带的输出outputs作为下游节点的输入,并命名为python_inputs
    echo '这是上游python节点的输出'${python_inputs};
    echo '取上游python节点输出的第1个数据'${python_inputs[0]};
    echo '取上游python节点输出的第2个数据'${python_inputs[1]};[1]}
  6. 单击工具栏中的运行图标。
  7. 警告对话框中,单击继续运行
  8. 查看结果。

下游引用赋值节点(SHELL)输出示例

  1. 在相应的业务流程下,双击打开赋值语言为SHELL的上游节点fuzhi_shell
  2. 单击编辑页面右侧的调度配置
  3. 配置上游节点。
    赋值节点使用赋值语言SHELL,赋值打印的结果hello,world给赋值节点自带的输出参数outputsSHELL
  4. 双击打开赋值语言为SHELL的下游节点赋值节点取值对比_shell
  5. 单击编辑页面右侧的调度配置,配置下游节点。
    下游节点依赖赋值节点fuzhi_shell,引用上游赋值节点fuzhi_shell自带的输出outputs作为下游节点的输入,并命名为shell_inputs
    echo '这是上游shell节点的输出'${shell_inputs};
    echo '取上游shell节点输出的第1个数据'${shell_inputs[0]};
    echo '取上游shell节点输出的第2个数据'${shell_inputs[1]};
  6. 单击工具栏中的运行图标。
  7. 警告对话框中,单击继续运行
  8. 查看结果。