ETL讲解(很详细)[转]
ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,⽬的是将企业中的分散、零乱、标准不统⼀的数据整合到⼀起,为企业的决策提供分析依据。 ETL是BI项⽬重要的⼀个环节。通常情况下,在BI项⽬中ETL会花掉整个项⽬⾄少1/3的时间,ETL设计的好坏直接关接到BI项⽬的成败。
  ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)中——这个过程也可以做⼀些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取⽅法,尽可能的提⾼ETL的运⾏效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,⼀般情况下这部分⼯作量是整个ETL的2/3。数据的加载⼀般在数据清洗完了之后直接写⼊DW(Data Warehousing,数据仓库)中去。
  ETL的实现有多种⽅法,常⽤的有三种。⼀种是借助ETL⼯具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现,⼀种是SQL⽅式实现,另外⼀种是ETL⼯具和SQL相结合。前两种⽅法各有各的优缺点,借助⼯具可以快速的建⽴起ETL⼯程,屏蔽了复杂的编码任务,提⾼了速度,降低了难度,但是缺少灵活性。SQL的⽅法优点是灵活,提⾼ETL运⾏效率,但是编码复杂,对技术要求⽐较⾼。第三种是综合了前⾯⼆种的优点,会极⼤地提⾼ETL的开发速度和效率。
  ⼀、数据的抽取(Extract)
  这⼀部分需要在调研阶段做⼤量的⼯作,⾸先要搞清楚数据是从⼏个业务系统中来,各个业务系统的数据库服务器运⾏什么DBMS,是否存在⼿⼯数据,⼿⼯数据量有多⼤,是否存在⾮结构化的数据等等,当收集完这些信息之后才可以进⾏数据抽取的设计。
  1、对于与存放DW的数据库系统相同的数据源处理⽅法
  这⼀类数据源在设计上⽐较容易。⼀般情况下,DBMS(SQLServer、Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建⽴直接的链接关系就可以写Select 语句直接访问。
  2、对于与DW数据库系统不同的数据源的处理⽅法
  对于这⼀类数据源,⼀般情况下也可以通过ODBC的⽅式建⽴数据库链接——如SQL Server和Oracle之间。如果不能建⽴数据库链接,可以有两种⽅式完成,⼀种是通过⼯具将源数据导出成.txt或者是.xls⽂件,然后再将这些源系统⽂件导⼊到ODS中。另外⼀种⽅法是通过程序接⼝来完成。
  3、对于⽂件类型数据源(.txt,.xls),可以培训业务⼈员利⽤数据库⼯具将这些数据导⼊到指定的数据库,然后从指定的数据库中抽取。或者还可以借助⼯具实现。大数据etl工具有哪些
  4、增量更新的问题
  对于数据量⼤的系统,必须考虑增量抽取。⼀般情况下,业务系统会记录业务发⽣的时间,我们可以⽤来做增量的标志,每次抽取之前⾸先判断ODS中记录最⼤的时间,然后根据这个时间去业务系统取⼤于这个时间所有的记录。利⽤业务系统的时间戳,⼀般情况下,业务系统没有或者部分有时间戳。
⼆、数据的清洗转换(Cleaning、Transform)
  ⼀般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进⾏⼀些业务规则的计算和聚合。
  1、数据清洗
  数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进⾏抽取。
不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三⼤类。
  (1)不完整的数据:这⼀类数据主要是⼀些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这⼀类数据过滤出来,按缺失的内容分别写⼊不同Excel⽂件向客户提交,要求在规定的时间内补全。补全后才写⼊数据仓库。
  (2)错误的数据:这⼀类错误产⽣的原因是业务系统不够健全,在接收输⼊后没有进⾏判断直接写⼊后台数据库造成的,⽐如数值数据输成全⾓数字字符、字符串数据后⾯有⼀个回车操作、⽇期格式不正确、⽇期越界等。这⼀类数据也要分类,对于类似于全⾓字符、数据前后有不可见字符的问题,只能通过写SQL语句的⽅式出来,然后要求客户在业务系统修正之后抽取。⽇期格式不正确的或者是⽇期越界的这⼀类错误会导致ETL运⾏失败,这⼀类错误需要去业务系统数据库⽤SQL的⽅式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
  (3)重复的数据:对于这⼀类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。
  数据清洗是⼀个反复的过程,不可能在⼏天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正⼀般要求客户确认,对于过滤掉的数据,写⼊Excel⽂件或者将过滤数据写⼊数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有⽤的数据过滤掉,对于每个过滤规则认真进⾏验证,并要⽤户确认。
  2、数据转换
  数据转换的任务主要进⾏不⼀致的数据转换、数据粒度的转换,以及⼀些商务规则的计算。
  (1)不⼀致数据转换:这个过程是⼀个整合的过程,将不同业务系统的相同类型的数据统⼀,⽐如同⼀个供应商在结算系统的编码是
XX0001,⽽在CRM中编码是YY0001,这样在抽取过来之后统⼀转换成⼀个编码。
  (2)数据粒度的转换:业务系统⼀般存储⾮常明细的数据,⽽数据仓库中数据是⽤来分析的,不需要⾮常明细的数据。⼀般情况下,会将业务系统数据按照数据仓库粒度进⾏聚合。
  (3)商务规则的计算:不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使⽤。
三、ETL⽇志、警告发送
  1、 ETL⽇志
  ETL⽇志分为三类。
⼀类是执⾏过程⽇志,这⼀部分⽇志是在ETL执⾏过程中每执⾏⼀步的记录,记录每次运⾏每⼀步骤的起始时间,影响了多少⾏数据,流⽔账形式。
⼀类是错误⽇志,当某个模块出错的时候写错误⽇志,记录每次出错的时间、出错的模块以及出错的信息等。
第三类⽇志是总体⽇志,只记录ETL开始时间、结束时间是否成功信息。如果使⽤ETL⼯具,ETL⼯具会⾃动产⽣⼀些⽇志,这⼀类⽇志也可以作为ETL⽇志的⼀部分。
记录⽇志的⽬的是随时可以知道ETL运⾏情况,如果出错了,可以知道哪⾥出错。
  2、警告发送
  如果ETL出错了,不仅要形成ETL出错⽇志,⽽且要向系统管理员发送警告。发送警告的⽅式多种,⼀般常⽤的就是给系统管理员发送邮件,并附上出错的信息,⽅便管理员排查错误。
  ETL是BI项⽬的关键部分,也是⼀个长期的过程,只有不断的发现问题并解决问题,才能使ETL运⾏效率更⾼,为BI项⽬后期开发提供准确与⾼效的数据。
后记
做数据仓库系统,ETL是关键的⼀环。说⼤了,ETL是数据整合解决⽅案,说⼩了,就是倒数据的⼯具。回忆⼀下⼯作这么长时间以来,处理数据迁移、转换的⼯作倒还真的不少。但是那些⼯作基本上
是⼀次性⼯作或者很⼩数据量。可是在数据仓库系统中,ETL上升到了⼀定的理论⾼度,和原来⼩打⼩闹的⼯具使⽤不同了。究竟什么不同,从名字上就可以看到,⼈家已经将倒数据的过程分成3个步骤,E、T、L 分别代表抽取、转换和装载。
其实ETL过程就是数据流动的过程,从不同的数据源流向不同的⽬标数据。但在数据仓库中,
ETL有⼏个特点,
⼀是数据同步,它不是⼀次性倒完数据就拉到,它是经常性的活动,按照固定周期运⾏的,甚⾄现在还有⼈提出了实时ETL的概念。
⼆是数据量,⼀般都是巨⼤的,值得你将数据流动的过程拆分成E、T和L。
现在有很多成熟的⼯具提供ETL功能,且不说他们的好坏。从应⽤⾓度来说,ETL的过程其实不是⾮常复杂,这些⼯具给数据仓库⼯程带来和很⼤的便利性,特别是开发的便利和维护的便利。但另⼀⽅⾯,开发⼈员容易迷失在这些⼯具中。举个例⼦,VB是⼀种⾮常简单的语⾔并且也是⾮常易⽤的编程⼯具,上⼿特别快,但是真正VB的⾼⼿有多少?微软设计的产品通常有个原则是“将使⽤者当作傻⽠”,在这个原则下,微软的东西确实⾮常好⽤,但是对于开发者,如果你⾃⼰也将⾃⼰当作傻⽠,那就真的傻了。ETL⼯具也是⼀样,这些⼯具为我们提供图形化界⾯,让我们将主要的精⼒放在规则上,
以期提⾼开发效率。从使⽤效果来说,确实使⽤这些⼯具能够⾮常快速地构建⼀个job来处理某个数据,不过从整体来看,并不见得他的整体效率会⾼多少。问题主要不是出在⼯具上,⽽是在设计、开发⼈员上。他们迷失在⼯具中,没有去探求ETL的本质。可以说这些⼯具应⽤了这么长时间,在这么多项⽬、环境中应⽤,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表⾯这些⼯具的简单使⽤去看它背后蕴涵的思想,最终我们作出来的东西也就是⼀个个独⽴的job,将他们整合起来仍然有巨⼤的⼯作量。⼤家都知道“理论与实践相结合”,如果在⼀个领域有所超越,必须要在理论⽔平上达到⼀定的⾼度.

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