dataworks彭敏 2019-01-14 1429浏览量
在日常Dataworks的使用过程中,经常会有同学遇到如下的问题:我有一个节点,需要每个月的最后一天执行,应该如何设置?
这种情况我们一般的回复是:由于cron表达式无法表达这种场景,所以暂时无法支持。
但是,现在我们有了分支节点,它让我们可以套用switch-case的编程模型来搞定这个问题。下面有请分支节点和他的小兄弟们粉墨登场!!!
现在打开“数据开发”页面,可以看到“控制节点”一栏多了几个新面孔,先来一张合影:
他们分别是:
下面这张图可以示意在有分支节点的情况下,依赖树会变成什么样
X/Y:分支节点,他们挂在赋值节点ASN下面,根据赋值节点的输出做分支的选择。如图,X 节点选择了左边的分支、Y节点选择了左边两个分支
好了分支节点的兄弟们已经介绍完毕,接下来看他们通力合作,解决某个节点只有每个月最后一天跑场景。
首先定义一组任务依赖:
赋值节点新建时会自带一个outputs,赋值节点的代码支持SQL/SHELL/PYTHON三种
这里采用PYTHON类型作为赋值节点的代码,调度属性和代码如下:
代码
调度属性
分支节点可以用简单的PYTHON语法的表达式定义条件,每个条件会绑定一个输出,意味着当满足这个条件时改输出下的下游节点会被执行起来,而其他的会被置为空跑。
调度配置
分支配置
再来看一遍调度配置
最后,给真正执行任务的节点挂依赖的地方也要注意,可以看到分支节点已经有三个输出了,按照以往挂依赖的逻辑,把这三个输出中的任意一个当做输入即可;但是由于现在分支节点的输出关联了条件,所以要慎重选择。
每月最后一天执行的节点依赖
每月其他时间执行的节点依赖
现在到了见证奇迹的时刻,发布之后,我们执行一下补数据,业务日期选择2018-12-30和2018-12-31,也就是定时时间分别为2018-12-31和2019-01-01,这样第一批补数据应该是会触发“最后一天”的逻辑,第二批触发“非最后一天”的逻辑,我们看看两者的区别。
分支节点分支选择结果
节点“最后一天执行”正常执行
节点“除了最后一天之外运行”被置为空跑
分支节点分支选择结果
节点“最后一天执行”被置为空跑
节点“除了最后一天之外运行”正常执行
好了,基于分支节点,我们已经实现了“每个月最后一天”执行的这一目标,当然这只是分支节点最简单的使用方法。基于赋值+分支,可以组合出各种各样的条件满足业务上的需求,期待大家一起发掘分支节点的能力。
最后,再回顾一下分支节点相关的要点:
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
集结各类场景实战经验,助你开发运维畅行无忧