一、什么是ETL
1.1 定义
ETL是数据抽取(Extract)、转换(Transform)、加载(Load )的简写,它是将OLTP系统中的数据经过抽取,并将不同数据源的数据进行转换、整合,得出一致性的数据,然后加载到数据仓库中。简而言之ETL是完成从 OLTP系统到OLAP系统的过程。
看过这样一本书,将ETL比作餐馆的后厨,后厨是自成体系的,多才多艺的厨师将获得的原始食材,然后将他们烹调为美味膳食。
1.2 ETL设计目标
(1)规范管理
餐厅管理者希望厨房能够准时正常的出菜,必须保证食材的选取标准,食材的来源,厨师的技术等,。
(2)数据质量
如果从厨房出来的产品无法满足顾客的期望的情况反复出现,餐厅注定要倒闭的。
(3)一致性、完整性
当厨师将好的食材做成美食时,需要保证美食都满足客户的要求,不能够出现生熟程度不一致,并且需要保证美食所需食材的完备,不丢失。
(4)高效产出
客户不希望上菜等太久,厨师做菜的过程中需把握哪道菜耗时长,哪道菜耗时短。
1.3 ETL最佳实践的宗旨
不要采取无结构的方法
二、ETL流程
1.1 明确需求
从ETL设计者的角度来看,业务需求是DW/BI系统用户的信息需求,因为这些信息需求直接驱动对数据源的选择以及选择的数据在ETL系统中的转换结果,那么ETL开发人员必须理解并且仔细验证商业需求。
1.2 候选数据源探索
(1) 数据质量监控(异常数据检测)
一旦确定了候选数据源,就需要对数据源进行轻量级的评估工作,先对该数据源各个字段抽样检查,例如空值,已处理的比例,每个字段的值分布等。
(2) 归档
针对评估工作中的数据内容、一致性、和结构描述进行归档,这将避免后续开发ETL作业返工的现象。
(3) 数据探索
1.收集所有的源系统的文档、数据字典等内容。
2.收集源系统的使用情况,如谁在用、每天多少人用、占多少存储空间等内容。
3.判断出数据的起始来源(System-of-Record)。
4.通过数据概况(DataProfiling)来对源系统的数据关系进行分析。
数据探索阶段的主要目的是理解源系统的情况,为后续的数据建模和逻辑数据映射打下坚实的基础。