1. 概述
1.1 应用场景
我们每月定期对员工销量总和进行计算,若销量总和大于 500,则筛选出销售量大于平均值的员工信息,写入优秀员工信息表,进行表扬嘉奖,若销量总和小于 500 则筛选出销售量小于平均值的员工信息,写入需要进步员工信息表,区域负责人和对应同学进行沟通,辅助成长。
1.2 实现思路
使用参数赋值节点获取员工销量总和,并传递给参数。
使用条件分支节点判断参数值,若参数值大于等于 500,控制执行A下游节点,若参数值小于 500,控制执行 B 下游节点。
2. 示例
2.1 准备数据
1)数据库中新建一张表,使用sql脚本节点,创建员工销量统计表,主键是id,如下图所示:
drop TABLE sales;
CREATE TABLE IF NOT EXISTS `sales` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`sales` varchar(255) DEFAULT NULL,
`city` varchar(255) DEFAULT NULL,
`prov` varchar(255) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8;
ALTER TABLE sales AUTO_INCREMENT=1;
INSERT INTO `sales` VALUES (null, '张飞云', 45,'苏州','江苏');
INSERT INTO `sales` VALUES (null, '李亮', 50,'无锡','江苏');
INSERT INTO `sales` VALUES (null, '王大林', 70,'常州','江苏');
INSERT INTO `sales` VALUES (null, '刘再清', 30,'无锡','江苏');
INSERT INTO `sales` VALUES (null, '曹子云', 80,'苏州','江苏');
INSERT INTO `sales` VALUES (null, '张强', 60,'常州','江苏');
INSERT INTO `sales` VALUES (null, '王小明', 40,'无锡','江苏');
INSERT INTO `sales` VALUES (null, '陈俊', 100,'常州','江苏');
INSERT INTO `sales` VALUES (null, '周旭', 50,'南京','江苏');
INSERT INTO `sales` VALUES (null, '柳一', 75,'南京','江苏');
2.2 整体流程
实现上述场景的 ETL 整体流程如下:
2.3 实现步骤
首先按照上图把节点拖到设计界面,给这些节点重命名,并将节点连接起来。
创建员工销量表和为员工销量表插入数据,2 个节点操作已经在 2.1准备数据 中进行了介绍,这里从第三个节点“获取所有员工的销量总和”开始介绍。
2.3.1 获取所有员工的销量总和
使用参数赋值节点,获取所有员工的销量总和,并赋值给sales参数。
2.3.2 判断销量总和是否大于500
使用条件分支节点,控制若销量大于等于 500,执行下游节点“销量大于平均值的员工信息入库”,若销量小于 500,则执行下游节点“销量小于平均值的员工信息入库”
2.3.3 销量大于平均值的员工信息入库
使用离线同步节点,获取销量大于的员工信息,写入优秀员工表
2.3.4 销量小于平均值的员工信息入库
使用离线同步节点,获取销量小于的员工信息,写入需进步员工表。
2.4 效果查看
因为销量总和 sales 参数值是 600,所以执行“销量大于平均值的员工信息入库”分支,所以“销量小于平均值的员工信息入库”分支被跳过。