BI项⽬中的ETL设计详解(数据抽取、清洗与转换)
ETL是BI项⽬最重要的⼀个环节,通常情况下ETL会花掉整个项⽬的1/3的时间,ETL设计的好坏直接关接到BI项⽬的成败。ETL也是⼀个长期的过程,只有不断的发现问题并解决问题,才能使ETL运⾏效率更⾼,为项⽬后期开发提供准确的数据。
ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS中(这个过程也可以做⼀些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取⽅法,尽可能的提⾼ETL的运⾏效率。ETL三个部分中,花费时间最长的是T(清洗、转换)的部分,⼀般情况下这部分⼯作量是整个ETL的2/3。数据的加载⼀般在数据清洗完了之后直接写⼊DW中去。
ETL的实现有多种⽅法,常⽤的有三种,第⼀种是借助ETL⼯具如Oracle的OWB、SQL server 2000的DTS、SQL Server2005的SSIS服务、informatic等实现,第⼆种是SQL⽅式实现,第三种是ETL⼯具和SQL相结合。前两种⽅法各有优缺点,借助⼯具可以快速的建⽴起ETL ⼯程,屏蔽复杂的编码任务,提⾼速度,降低难度,但是⽋缺灵活性。SQL的⽅法优点是灵活,提⾼ETL运⾏效率,但是编码复杂,对技术要求⽐较⾼。第三种是综合了前⾯⼆种的优点,极⼤的提⾼ETL的开发速度和效率。
数据的抽取
数据的抽取需要在调研阶段做⼤量⼯作,⾸先要搞清楚以下⼏个问题:数据是从⼏个业务系统中来?各个业务系统的数据库服务器运⾏什么DBMS?是否存在⼿⼯数据,⼿⼯数据量有多⼤?是否存在⾮结构化的数据?等等类似问题,当收集完这些信息之后才可以进⾏数据抽取的设计。
1、与存放DW的数据库系统相同的数据源处理⽅法
这⼀类数源在设计⽐较容易,⼀般情况下,DBMS(包括SQLServer,Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建⽴直接的链接关系就可以写Select 语句直接访问。
2、与DW数据库系统不同的数据源的处理⽅法。
这⼀类数据源⼀般情况下也可以通过ODBC的⽅式建⽴数据库链接,如SQL Server和Oracle之间。如果不能建⽴数据库链接,可以有两种⽅式完成,⼀种是通过⼯具将源数据导出成.txt或者是.xls⽂件,然后再将这些源系统⽂件导⼊到ODS中。另外⼀种⽅法通过程序接⼝来完成。
3、对于⽂件类型数据源(.txt,,xls),可以培训业务⼈员利⽤数据库⼯具将这些数据导⼊到指定的数据库,然后从指定的数据库抽取。或者可以借助⼯具实现,如SQL SERVER 2005 的SSIS服务的平⾯数据源和平⾯⽬标等组件导⼊ODS中去。
4、增量更新问题
对于数据量⼤的系统,必须考虑增量抽取。⼀般情况,业务系统会记录业务发⽣的时间,可以⽤作增量的标志,每次抽取之前⾸先判断ODS 中记录最⼤的时间,然后根据这个时间去业务系统取⼤于这个时间的所有记录。利⽤业务系统的时间戳,⼀般情况下,业务系统没有或者部分有时间戳。
数据的清洗转换
大数据etl工具有哪些⼀般情况下,数据仓库分为ODS、DW两部分,通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,再从ODS到DW的过程中转换,进⾏⼀些业务规则的计算和聚合。
1、数据清洗
数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进⾏抽取。不符合要求的数据主要是有不完整的数据、错误的数据和重复的数据三⼤类。
A、不完整的数据,其特征是是⼀些应该有的信息缺失,如供应商的名称,分公司的名称,客户的区域信息缺失、业务系统中主表与明细表不能匹配等。需要将这⼀类数据过滤出来,按缺失的内容分别写⼊不同Excel⽂件向客户提交,要求在规定的时间内补全。补全后才写⼊数据仓库。
B、错误的数据,产⽣原因是业务系统不够健全,在接收输⼊后没有进⾏判断直接写⼊后台数据库造成
的,⽐如数值数据输成全⾓数字字符、字符串数据后⾯有⼀个回车、⽇期格式不正确、⽇期越界等。这⼀类数据也要分类,对于类似于全⾓字符、数据前后有不⾯见字符的问题只能写SQL的⽅式出来,然后要求客户在业务系统修正之后抽取;⽇期格式不正确的或者是⽇期越界的这⼀类错误会导致ETL运⾏失败,这⼀类错误需要去业务系统数据库⽤SQL的⽅式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
C、重复的数据,特别是维表中⽐较常见,将重复的数据的记录所有字段导出来,让客户确认并整理。
数据清洗是⼀个反复的过程,不可能在⼏天内完成,只有不断的发现问题,解决问题。对于是否过滤、是否修正⼀般要求客户确认;对于过滤掉的数据,写⼊Excel⽂件或者将过滤数据写⼊数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快的修正错误,同时也可以作为将来验证数据的依据。数据清洗需要注意的是不要将有⽤的数据过滤掉了,对于每个过滤规则认真进⾏验证,并要⽤户确认才⾏。
2、数据转换
数据转换的任务主要是进⾏不⼀致的数据转换、数据粒度的转换和⼀些商务规则的计算。
A、不⼀致数据转换,这个过程是⼀个整合的过程,将不同业务系统的相同类型的数据统⼀,⽐如同⼀个供应商在结算系统的编码是
XX0001,⽽在CRM中编码是YY0001,这样在抽取过来之后统⼀转换成⼀个编码。
B、数据粒度的转换,业务系统⼀般存储⾮常明细的数据,⽽数据仓库中的数据是⽤来分析的,不需要⾮常明细的数据,⼀般情况下,会将业务系统数据按照数据仓库粒度进⾏聚合。
C、商务规则的计算,不同的企业有不同的业务规则,不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,供分析使⽤。
ETL⽇志与警告发送
1、ETL⽇志,记录⽇志的⽬的是随时可以知道ETL运⾏情况,如果出错了,出错在那⾥。
ETL⽇志分为三类。第⼀类是执⾏过程⽇志,是在ETL执⾏过程中每执⾏⼀步的记录,记录每次运⾏每⼀步骤的起始时间,影响了多少⾏数据,流⽔账形式。第⼆类是错误⽇志,当某个模块出错的时候需要写错误⽇志,记录每次出错的时间,出错的模块以及出错的信息等。第三类⽇志是总体⽇志,只记录ETL开始时间,结束时间是否成功信息。
如果使⽤ETL⼯具,⼯具会⾃动产⽣⼀些⽇志,这⼀类⽇志也可以作为ETL⽇志的⼀部分。
2、警告发送
ETL出错了,不仅要写ETL出错⽇志⽽且要向系统管理员发送警告,发送警告的⽅式有多种,常⽤的就是给系统管理员发送邮件,并附上出错的信息,⽅便管理员排查错误。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。