一、Kettle 流程和应用算子
上篇文章对Kettle
转换算子进行了介绍,本篇文章继续对Kettle
的流程和应用算子进行讲解。
下面是上篇文章的地址:
ETL工具 - Kettle 转换算子介绍
流程算子主要用来控制数据流程和数据流向:
应用算子则是Kettle
给我们提供的一些工具类:
二、流程算子介绍
数据输入使用 MySQL
表输入,表结构如下:
CREATE TABLE `user` (
`id` int NOT NULL AUTO_INCREMENT,
`name` varchar(255) DEFAULT NULL,
`age` int DEFAULT NULL,
`type` int DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=13 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (1, '小明', 90, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (3, '小兰', 92, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (4, '小爱', 93, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (5, '张三', 94, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (6, '李四', 95, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (7, '王五', 96, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (8, '赵六', 97, '1');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (9, 'xiao ai', 22, '2');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (10, 'wang wu ', 23, '2');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (11, '小王,小七', 22, '3');
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (12, '小八,小九', 23, '3');
表输入控件:
2.1 空操作 (什么也不做)
什么也不做,一般作为数据流的终点:
运行后:
2.2 Switch/case
典型的数据分类计算,利用某个字段的不同的值,让数据流向不同的分路:
运行后预览数据:
2.3 过滤记录
相当于 if-else
,可以自定义输入一个判断条件,将数据流中分为两路:
运行后预览数据:
2.4 中止
数据流的终点,如果有数据流到此控件处,整个转换程序将中止,一般用来校验数据,或者调试程序:
运行后:
三、应用算子介绍
3.1 写日志
主要在调试的时候使用,可以将数据流的每行数据打印到控制台:
运行后效果:
3.2 替换NULL值
将数据里面的 null
值替换成其他的值:
在数据库中添加一个测试数据:
INSERT INTO `test`.`user`(`id`, `name`, `age`, `type`) VALUES (13, NULL, NULL, '4');
运行后效果: