DAYU数据开发EL表达式常见使用场景 ----- 根据前一个节点的output进行IF条件判断
【摘要】 本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
- 点赞
- 收藏
- 关注作者
作者其他文章
Dayu_sunny2020/11/13 09:15:511楼编辑删除举报