分支节点是DataStudio中提供的逻辑控制系列节点之一。本文将为您介绍通过DataStudio中提供的分支节点(逻辑控制系列节点之一),实现单个任务在业务量处于较高水平时报表任务延迟产出;业务量较低时,报表即时产出的业务需求。
场景介绍
在生产过程中,经常会遇到在凌晨时段业务量处于较高水平,分钟级的报表任务通常可以延迟产出,而其余时段业务量较低,报表需要即时产出的情况。为满足业务输出需求,需要将同一任务按照两种调度周期执行,目前常规的Cron表达式是无法实现该业务场景的。本文通过DataWorks提供的分支节点可以帮助您实现单个任务在00:00-08:00期间每小时调度一次,其它时间段每5分钟调度一次的业务需求。详情请参见分支节点。
前提条件
已购买DataWorks标准版及以上版本,详情请参见DataWorks各版本详解。
仅DataWorks标准版及以上版本支持使用分支节点。
实现原理
业务实现原理,如下图所示:
通过赋值节点的内部代码逻辑对实例执行时间进行划分。
说明需要执行任务实例的时间返回
1
。不需要执行任务实例的时间返回
-1
。
下游的分支节点接收到赋值节点的输出值时,进行逻辑判断,参数大于0设为执行条件,参数小于0设为空跑条件。
将执行节点挂载到执行条件下,空跑节点挂载到空跑条件下。确保在不需要执行任务实例的时间段执行空跑节点。需要执行任务实例的时间段走执行节点。
说明空跑节点仅作为验证节点使用,实际生产中可以忽略。执行节点可作为虚拟节点,将实际业务节点挂载到该虚拟节点下方来实现业务的执行流转。
操作步骤
步骤一:创建赋值节点
进入数据开发页面。
登录DataWorks控制台,切换至目标地域后,单击左侧导航栏的 ,在下拉框中选择对应工作空间后单击进入数据开发。
新建赋值节点。
右键单击目标业务流程,选择
。说明您也可以鼠标悬停至新建,选择
。在新建节点对话框中,输入名称,并选择节点类型及路径。单击确认,进入赋值节点编辑页面。
说明节点名称支持大小写字母、中文、数字、下划线(_)和小数点(.)。
开发赋值节点任务。
赋值节点支持ODPS SQL、SHELL和Python三种语言编写开发任务,本文采用ODPS SQL语言进行示例说明。
SELECT CASE WHEN CAST(to_char(getdate(),'hh') AS BIGINT ) >= 0 AND CAST(to_char(getdate(),'hh') AS BIGINT ) < 8 AND CAST(to_char(getdate(),'mi') AS BIGINT ) >=5 THEN -1 ELSE 1 END AS do_flag; -- do_flag 脚本执行结果别名仅作为别名使用,不影响调度配置中本节点输出参数。
说明to_char(getdate(),'hh')函数是用于获取当前时间中具体小时数的函数。
to_char(getdate(),'mi')函数是用于获取当前时间中具体分钟数的函数。
该节点输出参数默认为右侧调度配置中的本节点输出参数
outputs
,该节点输出值会被DataWorks捕获,传递给下游分支节点。
单击图标,保存编写的SQL语句。
步骤二:创建分支节点
新建分支节点。
右键单击目标业务流程,选择
。说明您也可以鼠标悬停至新建,选择
。在新建节点对话框中,输入名称,并选择节点类型及路径。单击确认,进入分支节点编辑页面。
说明节点名称支持大小写字母、中文、数字、下划线(_)和小数点(.)。
添加分支。
在分支节点编辑页面左上角单击添加分支按钮。
在对话框中,输入分支条件、关联到节点输出、分支描述信息,单击确认。
分支条件
关联到节点输出
分支描述
${input}<0
空跑条件
非必填
${input}>0
执行条件
非必填
说明分两次添加上面表格中的分支条件、关联到节点输出、分支描述内容信息。
添加依赖关系。
在页面右边框位置找到调度配置参数,在调度依赖的依赖的上游节点下拉选择节点名称,在输入框中输入步骤一中创建的赋值节点名称,选择后缀名为
_out
的赋值节点,单击添加按钮。添加输入参数。
在调度配置参数页面,单击打开节点上下文参数内容,单击本节点输入参数旁边的添加按钮。在参数名中写入变量
input
,在取值来源下拉框选择您创建的赋值节点输出源,单击保存按钮。在分支节点编辑页面单击图标,保存创建的分支节点。
步骤三:创建ODPS SQL任务节点
新建空跑和执行任务节点。
右键单击目标业务流程,选择
。说明您也可以鼠标悬停至新建,选择
。在新建节点对话框中,输入名称,并选择引擎实例、节点类型及路径。单击确认,进入ODPS SQL节点编辑页面。
说明节点名称支持大小写字母、中文、数字、下划线(_)和小数点(.)。
编写ODPS SQL任务脚本。
编写ODPS SQL任务空跑节点示例代码。
SELECT '这是一个任务空跑节点';
在页面右边框位置找到调度配置参数,在调度依赖的依赖的上游节点下拉选择节点名称,在输入框中输入步骤二中创建的分支节点名称,选择分支节点中的空跑条件分支,单击添加按钮完成空跑节点挂载。单击图标,保存编写的SQL语句。
编写ODPS SQL任务执行节点示例代码。
SELECT '这是一个任务执行节点';-- 该节点可以替换成实际业务处理,此处仅做逻辑实现展示
同理,参照上述步骤选择分支节点中的执行条件分支,单击添加按钮完成执行节点挂载。单击图标,保存编写的SQL语句。
结果验证
完成上述所有配置后,您可以提交并发布业务流程。业务流程发布完成后,您可以设置每5分钟定时执行一次该业务流程。待业务流程执行完成,右键单击任务空跑、任务执行两个任务节点,在任务节点上单击查看日志按钮查看日志。
您可在次日查看任务空跑节点、任务执行节点执行日志情况,示例如下:
07:00~07:05之间任务执行节点正常执行,控制台打印
这是一个任务执行节点
内容。空跑任务节点会被置为空跑,打印It's set condition-skip by task
内容。07:05~08:00之间任务执行节点会被置为空跑,打印
It's set condition-skip by task
内容。空跑任务控制台正常执行,打印这是一个任务空跑节点
内容。