ETL及kettle介绍
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目录
1. ETL知识 (3)
1.1. ETL定义 (3)
1.1.1. 定义 (3)
1.1.2. 前提 (3)
1.1.3. 原则 (3)
1.2. 模式及比较 (4)
1.3. ETL过程 (7)
1.3.1. 总流程 (7)
1.3.2. 数据抽取流程 (8)
1.3.3. 数据清洗流程 (8)
1.3.4. 数据转换流程 (10)
1.3.5. 数据加载流程 (11)
1.4. 问题分析 (12)
1.4.1. 字符集问题 (12)
1.4.2. 缓慢变化维处理 (14)
1.4.3. 增量、实时同步的处理 (14)
1.4.4. 断点续传 (15)
1.5. ETL工具 (15)
2. Kettle简介及使用 (16)
2.1. 什么Kettle? (16)
2.2. 下载及安装Kettle (17)
2.3. Kettle简单例子 (19)
2.3.1. 启动Kettle (19)
2.3.2. 创建transformation过程 (20)
2.3.3. 创建job过程 (41)
2.3.4. 命令行运行ktr和kjb (45)
1.ETL知识
1.1.ETL定义
1.1.1.定义
●定义:
数据的抽取(Extract)、转换(Transform)、装载(Load)的过程。
●目标:
数据优化。以最小代价(包括对日常操作的影响和对技能的要求) 将针对日常业务操作的数据转化为针对数据仓库而存储的决策支持型数据。
1.1.
2.前提
●确定ETL范围
通过对目标表信息的收集,确定ETL的范围
●选择ETL工具
考虑资金
运行的平台、对源和目标的支持程度、可编程的灵活性、对源数据变化的监测、数据处理时间的控制、管理和调度功能、对异常情况的处理
●确定解决方案
抽取分析、变化数据的捕获、目标表的刷新策略、数据的转换及数据验证
1.1.3.原则
●应尽量利用数据中转区对运营数据进行预处理。保证数据的安全性、集
成与加载的高效性。
●ETL的过程应是主动“拉取”,而不是从内部“推送”,其可控性将大为
增强。
●流程化的配置管理和标准协议
●数据质量的保证
正确性(Accuracy):数据是否正确体现在现实或可证实的来源
完整性(Integrity):数据之间的参照完整性是否存在或一致
一致性(Consistency):数据是否被一致的定义或理解
完备性(Completeness):所有需要的数据是否都存在
有效性(Validity):数据是否在企业定义的可接受的范围之内
时效性(Timeliness):数据在需要的时间是否有效
可获取性(Accessibility):数据是否易于获取、易于理解和易于使用
数据格式错误(如缺失数据、数据值超出范围或数据格式非法等)
数据一致性:数据源系统为了性能的考虑,会在一定程度上舍弃外键约束,这通常会导致数据不一致。例如在帐务表中会出现一个用户表中没有的用户ID,在例如有些代码在代码表中找不到等。
1.2.模式及比较
●两种模式
异构
同构
模式比较的维度:特点
环境
1.3.ETL过程1.3.1.总流程
●数据抽取
●数据清洗
●数据转换
●数据加载
1.3.
2.数据抽取流程
●数据来源
文件系统,业务系统
●抽取方式
根据具体业务进行全量或增量抽取
●抽取效率
将数据按一定的规则拆分成几部分进行并行处理
●抽取策略
根据具体业务制定抽取的时间、频度,以及抽取的流程1.3.3.数据清洗流程
清洗规则:
●数据补缺
对空数据、缺失数据进行数据补缺操作,无法处理的作标记
●数据替换
对无效数据进行数据的替换
●格式规范化
将源数据抽取的数据格式转换成为便于进入仓库处理的目标数据格式●主外键约束
通过建立主外键约束,对非法数据进行替换或导出到错误文件重新处理
1.3.4.数据转换流程
转换规则
●数据合并
多用表关联实现,大小表关联用lookup,大大表相交用join(每个字段加索引,保证关联查询的效率)
●数据拆分
按一定规则进行数据拆分
●行列互换
●排序/修改序号
●去除重复记录
●数据验证:lookup,sum,count
1.3.5.数据加载流程
1.4.问题分析
1.4.1.字符集问题
1.字符集定义
字符集是字符(包含字母,数字,符号和非打印字符等)以及所指定的内码所组成的特定的集合。是基于某种操作系统平台和某种语言集支持的。语言集的集合被称为语言组,它可能包含一种或多种语言。
2.C/S字符集转换
●直接转换
对于同一语言组的不同字符集之间,可以直接进行字符的转换,不会产生乱码
●通过Unicode转换
Unicode支持超过650种语言的国际字符集
Unicode系统缺省字符集utf-8