文章目录
一、简介二、资源库(新建、管理)三、转换1. 新建数据源2. 简单的输入输出 配置步骤2.1 配置表输入2.2 配置表输出2.3 保存2.4 启动与执行结果 3. 转换1. 去重(去重前需要 排序)2. 剪切字符串3. 拆分字段4. 增加常量5. 增加序列6. 字段选择7. 字符串操作8. 字符串替换9. 计算器10. 值映射11. 行/列转换11.1 列转行(在数据库中叫做行专列)行转列类比SQL 11.2 行转列(在数据库中叫做列转行)类比列转行SQL 4. 应用4.1 写日志 5. 流程5.1 switch/case 6. 脚本7. 查询8. 连接 9. 统计四、作业案例一作业的调度一、简介
Kettle是一项进行数据清洗的工具。
概念:
资源库 官方提供的一个需要部署的在线资源库数据库资源库文件资源库(最常用) 数据库连接:生成.kdb
文件转换:为了完成数据加载、处理。生成的文件为.ktr
。kettle的转换都是从输入开始到输出结束。作业JOB:用来调度,生成的文件是.kjb
。
二、资源库(新建、管理)
新建资源库
三、转换
输入 --> 输出
输入:表输入、Excel输入、CVS输入
输出:表输出、Excel输出、CVS输出、删除(delete)、插入/更新(merge)、更新(update)
其中的删除、插入、更新与数据库中的操作没有太大区别。不过Kettle更加强大可以读取文件,与不同的数据源。
1. 新建数据源
选择DB连接,右键单击,选择新建 -》 配置数据源连接信息 -》 完成配置
2. 简单的输入输出 配置步骤
2.1 配置表输入
将左侧核心对象的输入(表输入)拖入右侧面板,双击表输入打开配置框2. 配置步骤名称,选择数据库连接 -》点击获取sql语句 -》 选择对应表 -》 根据需求选择是否需要字段
2.2 配置表输出
2.3 保存
2.4 启动与执行结果
注意:在启动前必须保存转换
3. 转换
1. 去重(去重前需要 排序)
表输入 -> 排序记录 -> 去除重复记录 -> 表输出
注意:
在去重之前需要进行排序。在输出的时候如果乱码,需要对DB连接进行设置
2. 剪切字符串
3. 拆分字段
4. 增加常量
5. 增加序列
可以是数据库序列、或者程序自动生成的
6. 字段选择
选择、改名、改类型
7. 字符串操作
out stream filed改名、trim type去除空格、lower/upper大小写转换、padding填充、pad char填充字符、pad length填充到长度、initCap首字母大写、escape忽略大小写、remove special character 移除或替换
其中的pad相当于占位符
8. 字符串替换
相当于replace(‘#’,‘’);其中的搜索利用正则表达式。
9. 计算器
可以对日期、数字类型按照公式进行计算
10. 值映射
源值 -> 目标值
类比SQL:case when
11. 行/列转换
11.1 列转行(在数据库中叫做行专列)
对应SQL的行列转换语句。行列转换需要先对字段进行排序。
表输入 -》 排序记录 -》列转行 -》Excel输出
行转列类比SQL
SELECT nation,MAX(case when rank='第一' THEN city end) as '第一',MAX(case when rank='第二' THEN city end) as '第二'FROM city_1 t group by nation;select DISTINCT t.nation,(SELECT c.city from city_1 c WHERE t.nation = c.nation and c.`rank` = '第一') as '第一',(SELECT c.city from city_1 c WHERE t.nation = c.nation and c.`rank` = '第二') as '第二'from city_1 t;
11.2 行转列(在数据库中叫做列转行)
类比列转行SQL
select t.nation ,t.city1 ,'第一' as `rank` from city_2 tunion allselect t.nation ,t.city2 ,'第二' as `rank` from city_2 t;
// TODO 24-51
4. 应用
写日志、发邮件、运行SSH,空值替换
4.1 写日志
5. 流程
5.1 switch/case
6. 脚本
Java脚本、Sql脚本、公式
7. 查询
调用存储过程
8. 连接
使用连接之前需要进行排序,对于可以使用SQL解决的排序,应尽量使用SQL解决,效率相较于Kettle工具要高
记录集连接:俩个记录集连接合并记录集:将多个记录集合合并为一个,如果重复会过滤。switch/case是分支拆分。笛卡尔集连接Multiway merge join:多记录连接
kettle连接插件的缺陷:仅支持等值连接
9. 统计
分组:group by
四、作业
开始 -> 成功。用于调度。
案例一
可以设置作业是否重复、重复时间间隔。2. 设置变量,获取当前时间,可以从数据库获取。可以设置变量可见范围,parent(父任务)和root(根任务)或者jvm(虚拟机全局)。
3. 插入执行记录
4. 配置邮件发送
作业的调度
kettle中有三个命令:
spoon:图形化界面开发kitchen:执行作业的命令 /rep 配置资源库/user 配置资源库用户名/pass 配置资源库密码/job 配置作业的名字/logfile 日志文件路径/level 日志级别 pan:执行转换的命令 /rep 配置资源库/user 配置资源库用户名/pass 配置资源库密码/trans 转换的名称/logfile 日志文件路径/level 日志级别
可以用shell脚本来进行调度,也可以使用KettleOnline等调度工具。