查看原文
科技

EasyData离线开发的动态循环执行功能介绍

徐华 网易数帆学堂
2024-07-25


在使用 EasyData 数据研发治理平台时,有需要支持同一个任务被执行多次,并且每次执行的次数需要动态确定的场景,本文将通过一个案例说明如何使用嵌套流节点的循环执行功能,配合节点输出参数功能,实现任务的动态执行。


本文将对 EasyData 数据研发治理平台的“离线开发”产品中一个小功能进行介绍:「动态循环执行」



离线开发中有一种节点类型叫“嵌套流”,该节点可以引用一个离线开发已上线的任务。如下图,为包含嵌套流节点的任务:



在嵌套流内部,可以引用已上线任务,同时设置嵌套流节点的执行模式,目前支持单次执行和循环执行。如下图,为嵌套流节点的配置页面:




在循环执行模式下,支持设置多列参数,以及支持添加多行,来实现执行多次的功能。如下图,为执行模式选择循环执行的页面:



免费试用 EasyData>>


但是,上述方式仅能配置固定的执行次数。有些场景下,某些任务需要基于当天的某些产出数据,动态确定执行次数。


比如,某任务每天调度时,需要基于当日生成的日期,动态执行n次,比如当日生成了'2024-07-02'、'2024-07-04'这2个日期,需要某个任务按照这2个日期分别作为参数传入,并执行2次。


针对这样的场景,就可以使用循环执行功能,配合节点输出参数功能,实现任务的动态执行。下面将通过具体的案例来说明:




被嵌套任务,主要用于被嵌套流节点引用,该任务用来模拟需要被多次执行的任务。任务中,增加一个 SQL 节点,如下图:



免费试用EasyData>>


SQL 节点中编写用于接收动态执行参数的语句,如下图所示,表示会接收 para1 和 para2 参数,其中 para2 作为二级分区,para1 用于写入到表中。




编写完成后,任务直接提交上线即可(无需开启调度)。  




如下图,“有输出参数1” 和 “有输出参数2” 是 SQL节点,是包含输出参数的节点。用户在实际场景中,按需选择需要的节点类型,以及撰写真实的参数获取逻辑,比如日期的获取节点。


“嵌套流使用上游输出参数”是嵌套流节点,会引用真实需要动态执行的任务,即步骤一中的任务。


免费试用 EasyData>>




该节点用来模拟当日动态生成的参数,如下图,为“有输出参数1”节点,该节点查询出了2行记录。接着,在其它设置中,配置输出参数。


在实际场景中,该节点也可以是其它 SQL 类节点、python、perl、script 等可以设置输出参数的节点。主要功能就是通过这些节点获取动态参数。


该节点每次运行,则会将2行1列的数据,以二维数组的方式输出到参数 outputs1 中。



如下图,为“有输出参数2”节点,该节点查询出了3行记录。并且,在其它设置中,配置输出参数。该节点每次运行,则会将3行1列的数据,以二维数组的方式输出到参数 outputs2 中。


免费试用 EasyData>>




在该节点中,执行模式选择“循环执行”,在循环参数中增加1列,第一列选择“有输出参数1$outputs1”

第二列选择“有输出参数 2$outputs2” 参数名称分别填入“para1”和“para2”。


这2个参数,也即步骤一中,SQL 节点中使用到的参数,这里参数名称需要保持一致。


参数取值,均输入“[0:][0]”,这样配置,表示当前嵌套流节点在运行时,会把 outputs1 的结果,第1行第1列遍历到最后一行。


如果outputs1输出了2行结果,则此处相当于配置了2条记录,即outputs1[0][0]、outputs1[1][0],会执行2次,如果上游输入5行,则会执行5次。


特别的,像本案例中设置了 outputs1 和 outputs2 两列,则执行时以最小的取值决定循环次数,因为outputs1 有2个输出,outputs2 有3行输出,则实际会循环执行2次。


免费试用 EasyData>>


配置完成,保存节点,并设计任务调度信息,以及提交上线。




任务到达计划执行时间,就会生成实例开始运行,如下图,为任务的执行状态,其中嵌套流节点可以“查看执行详情”,点击则会出现弹框。



如下图,为嵌套流节点查看执行详情的弹框。在当前案例中,显示会循环执行2次。在用户实际场景中,则会按照当日实际的情况动态确定执行的次数。


免费试用 EasyData>>




任务运维中心的任务运行成功后,在自助分析中,查询步骤一中的写入表,显示有2条记录,符合预期。


免费试用 EasyData>>


以上就是如何使用嵌套流节点实现动态循环执行的介绍。该功能现已上线发布,SaaS 环境用户可直接使用体验,私有化部署用户请联系技术支持同学升级。欢迎各位用户留言与我们交流~


继续滑动看下一个
网易数帆学堂
向上滑动看下一个

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存