数据治理中心 DATAARTS STUDIO-获取SQL节点的输出结果值:通过For Each节点提取输出结果值
通过For Each节点提取输出结果值
场景说明
结合For Each节点及其支持的Loop内嵌对象EL表达式#{Loop.current[0]},循环获取前一节点输出的结果值。

为便于查看最终获得的结果值,本例中For Each节点子作业选择Kafka Client节点进行演示。在实际使用中,您可以根据您的业务需求选择子作业节点类型,在节点任务中应用Loop内嵌对象EL表达式,即可获取For Each前一节点返回的结果值。
- 数据集:数据集就是HIVE SQL节点的Select语句的执行结果。使用EL表达式#{Job.getNodeOutput("select95")},其中select95为前一个节点的名称。
- 子作业参数:子作业参数是子作业中定义的参数名,然后在主作业中定义的参数值,传递到子作业以供使用。此处子作业参数名定义为name和score,其值为分别为数据集中的第一列和第二列数值,使用EL表达式#{Loop.current[0]}和#{Loop.current[1]}。
而For Each节点中所选的子作业,则需要定义For Each节点中的子作业参数名,以便让主作业识别参数定义,作业如图6所示。
配置方法
开发子作业
- 登录 DataArts Studio 控制台,找到所需要的DataArts Studio实例,单击实例卡片上的“进入控制台”,进入概览页面。
- 选择“空间管理”页签,在工作空间列表中,找到所需要的工作空间,单击工作空间的“数据开发”,系统跳转至数据开发页面。
- 在“作业开发”页面,新建数据开发子作业EL_test_slave。选择一个Kafka Client节点,并配置作业参数,编排图6所示的作业。
此处需将参数名填写为name和score,仅用于主作业的For Each节点识别子作业参数;参数值无需填写。
- 配置Kafka Client节点参数。发送数据定义为:${name}: ${score},选择Kafka连接和Topic名称。
此处不能使用EL表达式#{Job.getParam("job_param_name")} ,因为此表达式只能直接获取当前作业里配置的参数的value,并不能获取到父作业传递过来的参数值,也不能获取到工作空间里面配置的全局变量,作用域仅为本作业。
而表达式${job_param_name},既可以获取到父作业传递过来的参数值,也可以获取到全局配置的变量。
图7 配置Kafka Client节点参数 - 配置完成后提交子作业。
- 数据治理中心_数据开发_数据开发示例_使用教程-华为云
- 数据治理中心_数据开发_最佳实践_-华为云
- 数据治理中心_数据开发_数据开发能力_脚本和节点介绍-华为云
- 数据治理中心_数据质量评估_质量规则和质量报告-华为云
- 数据治理中心_数据架构_数据架构使用示例-华为云
- 数据治理中心_数据开发_免费版及试用活动-华为云
- TaurusDB并行查询_TaurusDB内核_TaurusDB并行执行_PQ
- GaussDB查版本命令_GaussDB命令参考_高斯数据库查版本命令-华为云
- GaussDB gsql使用_gaussdb介绍_gaussdb用法_gaussdb教程
- 日志分析_日志结构化_日志格式化