DAYU数据开发EL表达式常见使用场景 ----- 根据前一个节点的output进行IF条件判断
本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条件
- 点赞
- 收藏
- 关注作者
评论(0)