详解一款ETL工具--数据清洗首推kettle
概述
ETL(即数据抽取、转换、装载的过程),对于企业或行业应用来说,我们经常会遇到各种数据的处理,转换,迁移,所以了解并掌握一种etl工具的使用,必不可少。kettle是纯java编写,支持图形化的GUI设计界面,然后可以以工作流的形式流转,在做一些简单或复杂的数据抽取、质量检测、数据清洗、数据转换、数据过滤等方面有着比较稳定的表现,下面一起来看下吧。
Kettle概念
Kettle是一款国外开源的ETL工具,纯java编写,可以在Window、Linux、Unix上运行,绿色无需安装,数据抽取高效稳定。
Kettle 中文名称叫水壶,该项目的主程序员MATT 希望把各种数据放到一个壶里,然后以一种指定的格式流出。
Kettle这个ETL工具集,它允许你管理来自不同数据库的数据,通过提供一个图形化的用户环境来描述你想做什么,而不是你想怎么做。
Kettle中有两种脚本文件,transformation和job,transformation完成针对数据的基础转换,job则完成整个工作流的控制。
Kettle组成
kettle家族目前包括四个产品,spoon,pan,chef,kitchen
Kettle-ETL
1、ETL
抽取(Extract):一般抽取过程需要连接到不同的数据资源,以便为随后的步骤(转换、加载、分析、报表展示等)提供数据。数据抽取部分看上去简单而琐碎,实际上是ETL解决方案的成功实施的一个主要障碍。
转换(Transform):任何对数据的处理过程都是转换。这些处理过程通常包括(但不限于)下面一些操作:
1、移动数据
2、根据规则验证数据
3、修改数据的内容或者数据结构
4、集成多个数据源的数据
5、根据处理后的数据计算派生值或者聚集值
加载(Load):将数据加载到目标系统的所有操作
2、ETL实现的主要转换
1、对空值的处理
如果在转换过程中捕获到某些字段存在空值,在进行加载时需要将空值替换成某一数据或者直接进行加载,不做任何转换。
2、对数据格式的规范化
根据业务数据源中各个字段的数据类型,进行数据格式的规范和统一。
例如,统一将数值类型转化成字符串类型。
3、根据业务需求进行字段的拆分或者合并
依据业务需求对字段可进行分解。
例如,主叫号020-88888888,可进行区域码和电话号码分解。
区域号:020
电话号码: 88888888
4、对缺失数据的替换
根据业务需求对可实现无效数据、缺失数据进行替换
5、根据业务规则对数据进行过滤
6、 根据编码表进行数据唯一性的转换
根据编码表制定的业务规范进行数据的转换,实现数据仓库系统内部数据的一致性。
对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。
ETL软件
商用ETL工具软件:
Informatica、IBM DataStage、Microsoft SSIS 、Oracle ODI
开源ETL工具软件:
Kettle 、Talend、CloverETL、Ketl、Octopus
总结:
Kettle和informatica都提供了大量的转换步骤,脚本功能,都可以处理复制的ETL转换。
通常情况下informatica比kettle更快。informatica有下推优化,缓存查询等提高性能的手段。但是如果你对kettle和数据库有足够的了解,做一些调整,你可以提高kettle的速度,在一些情况下可以达到甚至超过informatica的速度。
篇幅有限,今天主要介绍一下kettle方面的内容,后面有空再整理下kettle搭建及怎么使用,感兴趣的朋友可以关注一下~