随着现代企业信息化的发展,各业务线、产品线、部门都会承建各种信息化系统方便开展自己的业务。随着信息化建设的不断深入,由于业务系统之间各自为政、相互独立造成的数据孤岛”现象尤为普遍,业务不集成、流程不互通、数据不共享。这给企业进行数据的分析利用、报表开发、分析挖掘等带来了巨大困难。在此危急存亡之时,ETL应用而生,ETL的三大功能作为其核心机制完美地解决了上述的问题。
ETL,是英文Extract-Transform-Load的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据, ETL是BI(商业智能)项目重要的一个环节。
一、 数据抽取
数据抽取就是从源系统中获取业务数据的过程。数据的抽取需要充分满足商业智能系统的决策分析需要,为了保证不影响系统的性能,数据抽取时需要考虑很多因素,包括抽取方式、抽取时间和抽取周期等内容。
例如,抽取方式包括增量抽取、全量抽取。抽取时间应该尽量在系统使用的低谷时段,如夜间。抽取的周期是根据业务的需求制定的,如按小时抽取,或者按天、月、季度、年等抽取。在数据抽取之前,需要确定业务系统的数据情况,了解数据量的大小,以及业务系统中每张表的数据结构、字段含义、表之间的关系等信息,当收集完这些信息后,才能进行数据抽取的设计开发等工作。
对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。
二、数据清洗
在一般情况下,数据清洗的目的就是选择出有缺陷的数据,然后再将它们正确化和规范化,从而达到用户要求的数据质量标准。其中数据「缺陷」可能包括以下几种情况:数值重复、数据缺失、数据错误、数据范围混淆、存在「脏」数据和数据不一致等几种情况。其中数值重复是指标准不唯一,很多数值都代表着相同的含义。数据范围混淆是指相同的数值会应用到不同的场合中,代表着不同的含义。
数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。
数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。
ETL 增量加载在方式上主要包括:
1.系统日志分析方式
2.触发器方式
3.时间戳方式
4.全表比对方式
5.源系统增量(delta)数据直接或者转换后加载
现在有很多成熟的工具提供ETL功能,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中,不去探求ETL的本质,真的就只是在使用工具而已。大家都知道“理论与实践相结合”,如果在一个领域有所超越,必须要在理论水平上达到一定的高度,只有两者兼得才能推动ETL的技术革新和自身素质的发展!
不写代码你养我啊08-23 11:30
HelloWorld09-29 17:28
兔子06-15 17:15