DAYU数据开发EL表达式常见使用场景 ----- 根据前一个节点的output进行IF条件判断

举报
JQIU 发表于 2020/11/05 19:07:03 2020/11/05
【摘要】 本Demo场景为获取HIVE SQL的select结果,作为参数传递到下一个节点进行进一步的条件判断,workflow如下图: 图1. --- 主作业关系图Foreach子作业配置如下图: ...

本Demo场景为获取HIVE SQL的select结果,作为参数传递到下一个节点进行进一步的条件判断,workflow如下图:


                                                                                    图1. --- 主作业关系图


Foreach子作业配置如下图:


                                                                                        图2. --- Foreach 子作业关系图


首先我们看一下HIVE SQL的脚本内容:


                                                                                                    图3.--- Hive脚本


此脚本的执行结果为2,该结果保存在一个二维数组中。要获取二维数组中的值,我们需要用到#{Loop.dataArray[][]}这个EL表达式。当前只有Foreach节点支持该表达式。所以HIVE SQL节点后面需要连接一个Foreach节点,foreach节点的详细配置如下图:



                                                                                         图4. --- ForEach节点配置



其中,数据集就是hive脚本select出来的结果。此处用到了#{Job.getNodeOutput('preNodeName')}这个EL表达式,其中preNodeName为前一个节点的名称。作业运行参数为子作业中配置的作业参数(参照图2),这个参数的作用是将前一个节点的输出,传递到子作业中去供子作业中使用。



然后我们尝试测试运行我们的主作业(图1),前往实例监控中查看执行结果:

                                                                                        图5. --- 实例监控中的子作业


参照图2,Foreach子作业中设置了两个条件分支,具体的条件设置如下图。当hive脚本输出的结果大于5的时候,执行上面一条路。当hive脚本的输出结果小于5的时候,执行下面一条路。从实例监控中可以看到执行结果是符合我们预期的,当前select出来的结果是2, 2< 5, 所以>5这个分支被跳过,workflow执行<5这个分支



                                                                                      图6. --- 子作业中的condition条件

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。