ETL是什么
⼀、ETL发展的背景
信息是现代企业的重要资源,是企业运⽤科学管理、决策分析的基础。据统计,数据量每经过2-3年时间就会成倍增长,这些数据蕴含着巨⼤的商业价值,⽽企业所关注的通常只占总数据量的2%~4%左右。因此,企业仍然没有最⼤化地利⽤已存在的数据资源,以⾄于浪费了更多的时间和资⾦,也失去制定关键商业决策的最佳契机。
于是,企业如何通过各种技术⼿段,并把数据转换为信息、知识,已经成了提⾼其核⼼竞争⼒的关键,其中的数据处理在⼤数据的⽣态中始终处于不可缺少的地位,因为数据处理的时效性,准确性直接影响数据的分析与挖掘,分析的最终结果影响业务的营销与收⼊。
随着企业的发展,各业务线、产品线、部门都会承建各种信息化系统⽅便开展⾃⼰的业务。随着信息化建设的不断深⼊,由于业务系统之间各⾃为政、相互独⽴造成的“数据孤岛”现象尤为普遍,业务不集成、流程不互通、数据不共享。这给企业进⾏数据的分析利⽤、报表开发、分析挖掘等带来了巨⼤困难。
在此情况下,为了实现企业全局数据的系统化运作管理(信息孤岛、数据统计、数据分析、数据挖掘),为DSS(决策⽀持系统)、
BI(商务智能)、经营分析系统等深度开发应⽤奠定基础,挖掘数据价值,企业会开始着⼿建⽴数据仓库,数据中台。将相互分离的业务系统的数据源整合在⼀起,建⽴⼀个统⼀的数据采集、处理、存储、分发、共享中⼼,从⽽使公司的成员能够从不同业务部门查看综合数据,⽽这个过程中使⽤的数据处理⽅法之⼀就是ETL。
ETL是数据中⼼建设、BI分析项⽬中不可或缺的环节。各个业务系统中分布的、异构的数据源,经过ETL过程的数据抽取、转换,最终存储到⽬标数据库或者数据仓库,为上层BI数据分析,或其他业务功能做数据⽀撑。
⼆、ETL是什么
ETL,即Extract-Transform-Load的缩写,是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。ETL是数据集成的第⼀步,也是构建数据仓库最重要的步骤,⽬的是将企业中的分散、零乱、标准不统⼀的数据整合到⼀起,为企业的决策提供分析依据。ETL⼀词较常⽤在数据仓库,但其对象并不限于数据仓库。如下图所⽰:
举个例⼦,某电商公司分析⼈员根据订单数据进⾏⽤户特征分析。这时需要基于订单数据,计算⼀些相应的分析指标,如每个⽤户的消费频次,销售额最⼤的单品,⽤户复购时间间隔等,这些指标都要通过计算转换得到。
三、ETL的流程
ETL如同它代表的三个英⽂单词,涉及三个独⽴的过程:抽取、转换和加载。⼯作流程往往作为⼀个正在进⾏的过程来实现,各模块可灵活进⾏组合,形成ETL处理流程。
1、数据抽取
数据抽取指的是从不同的⽹络、不同的操作平台、不同的数据库和数据格式、不同的应⽤中抽取数据的过程。⽬标源可能包括ERP、CRM 和其他企业系统,以及来⾃第三⽅源的数据。
不同的系统倾向于使⽤不同的数据格式,在这个过程中,⾸先需要结合业务需求确定抽取的字段,形成⼀张公共需求表头,并且数据库字段也应与这些需求字段形成⼀⼀映射关系。这样通过数据抽取所得到的数据都具有统⼀、规整的字段内容,为后续的数据转换和加载提供基础,具体步骤如下:
(1)确定数据源,需要确定从哪些源系统进⾏数据抽取;
(2)定义数据接⼝,对每个源⽂件及系统的每个字段进⾏详细说明;
(3)确定数据抽取的⽅法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每⽇抽取还是按照每⽉抽取?
2、数据转换
数据转换实际上还包含了数据清洗的⼯作,需要根据业务规则对异常数据进⾏清洗,主要将不完整数据、错误数据、重复数据进⾏处理,保证后续分析结果的准确性。
数据转换就是处理抽取上来的数据中存在的不⼀致的过程。数据转换⼀般包括两类:
第⼀类:数据名称及格式的统⼀,即数据粒度转换、商务规则计算以及统⼀的命名、数据格式、计量单位等;
第⼆类:数据仓库中存在源数据库中可能不存在的数据,因此需要进⾏字段的组合、分割或计算。主要涉及以下⼏个⽅⾯:
(1)空值处理:可捕获字段空值,进⾏加载或替换为其他含义数据,或数据分流问题库;
(2)数据标准:统⼀元数据、统⼀标准字段、统⼀字段类型定义;
(3)数据拆分:依据业务需求做数据拆分,如⾝份证号,拆分区划、出⽣⽇期、性别等;
(4)数据验证:时间规则、业务规则、⾃定义规则;
(5)数据替换:对于因业务因素,可实现⽆效数据、缺失数据的替换;
(6)数据关联:关联其他数据,保障数据完整性。
3、数据加载
数据加载的主要任务是将经过清洗后的⼲净的数据集按照物理数据模型定义的表结构装⼊⽬标数据仓库的数据表中,如果是全量⽅式则采⽤LOAD⽅式,如果是增量则根据业务规则MERGE进数据库,并允许⼈⼯⼲预,以及提供强⼤的错误报告、系统⽇志、数据备份与恢复功能。整个操作过程往往要跨⽹络、跨操作平台。
在实际的⼯作中,数据加载需要结合使⽤的数据库系统(Oracle、Mysql、Spark、Impala等),确定最优的数据加载⽅案,节约CPU、硬
盘IO和⽹络传输资源。
四、ETL与ELT有什么区别
ETL架构按其字⾯含义理解就是按照E-T-L这个顺序流程进⾏处理的架构:先抽取、然后转换、完成后加载到⽬标数据库中。
在ETL架构中,数据的流向是从源数据流到ETL⼯具,ETL⼯具是⼀个单独的数据处理引擎,⼀般会在单独的硬件服务器上,实现所有数据转化的⼯作,然后将数据加载到⽬标数据仓库中。如果要增加整个ETL过程的效率,则只能增强ETL⼯具服务器的配置,优化系统处理流程(⼀般可调的东西⾮常少)。
ELT架构则把“L”这⼀步⼯作提前到“T”之前来完成:先抽取、然后加载到⽬标数据库中、在⽬标数据库中完成转换操作。在ELT架构中,ELT 只负责提供图形化的界⾯来设计业务规则,数据的整个加⼯过程都在⽬标和源的数据库之间流动,ELT协调相关的数据库系统来执⾏相关的应⽤,数据加⼯过程既可以在源数据库端执⾏,也可以在⽬标数据仓库端执⾏(主要取决于系统的架构设计和数据属性)。当ETL过程需要提⾼效率,则可以通过对相关数据库进⾏调优,或者改变执⾏加⼯的服务器就可以达到。
ELT架构的特殊优势:
大数据etl工具有哪些(1)ELT主要通过数据库引擎来实现系统的可扩展性;
(2)ELT可以保持所有的数据始终在数据库当中,避免数据的加载和导出,从⽽保证效率,提⾼系统的可监控性;
(3)ELT可以根据数据的分布情况进⾏并⾏处理优化,并可以利⽤数据库的固有功能优化磁盘I/O;
(4)ELT的可扩展性取决于数据库引擎和其硬件服务器的可扩展性;
(5)通过对相关数据库进⾏性能调优,ELT过程获得3到4倍的效率提升⼀般不是特别困难;
(6)当您想要执⾏复杂的计算时,ETL⼯具⽐数据仓库或数据池更有效;
(7)如果要在加载到⽬标存储之前进⾏⼤量数据清理。ETL是⼀种更好的解决⽅案,因为您不会将不需要的数据移动到⽬标仓库中;(8)当您仅使⽤结构化数据或传统结构化数据仓库时。ETL⼯具通常最有效地将结构化数据从⼀个环境移动到另⼀个环境;
(9)当你想要扩展补充数据时。如果要在将数据移动到⽬标存储时扩展补充数据,则需要使⽤ETL⼯具。例如,添加时间戳。
五、如何才能做好ETL
1、数据抽取设计
数据的抽取需要在调研阶段做⼤量⼯作,要搞清楚以下⼏个问题:数据是从⼏个业务系统中来?各个业务系统的数据库服务器运⾏什么DBMS?是否存在⼿⼯数据,⼿⼯数据量有多⼤?是否存在⾮结构化的数据?等等类似问题,当收集完这些信息之后进⾏数据抽取的设计。常见的数据抽取设计⽅式有四种:
(1)与存放DW(Data Warehouse 数据仓库)的数据库系统相同的数据源处理⽅法
这⼀类数源在设计⽐较容易,⼀般情况下,DBMS(包括SQLServer,Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建⽴直接的链接关系就可以写Select 语句直接访问。
(2)与DW数据库系统不同的数据源的处理⽅法
这⼀类数据源⼀般情况下也可以通过ODBC的⽅式建⽴数据库链接,如SQL Server和Oracle之间。如果不能建⽴数据库链接,可以有两种⽅式完成,⼀种是通过⼯具将源数据导出成.txt或者是.xls⽂件,然后再将这些源系统⽂件导⼊到ODS中。另外⼀种⽅法通过程序接⼝来完成。
(3)对于⽂件类型数据源(.txt,.xls)
可以培训业务⼈员利⽤数据库⼯具将这些数据导⼊到指定的数据库,然后从指定的数据库抽取。或者可以借助⼯具实现,如SQL SERVER 2005 的SSIS服务的平⾯数据源和平⾯⽬标等组件导⼊ODS中去。
(4)增量更新问题
对于数据量⼤的系统,必须考虑增量抽取。⼀般情况,业务系统会记录业务发⽣的时间,可以⽤作增
量的标志,每次抽取之前⾸先判断ODS 中记录最⼤的时间,然后根据这个时间去业务系统取⼤于这个时间的所有记录。利⽤业务系统的时间戳,⼀般情况下,业务系统没有或者部分有时间戳。
2、数据清洗处理规范
不符合要求的数据主要有不完整数据(缺失值)、错误数据(异常值)、重复数据、不同类型需归⼀化处理数据。这⼏类数据的处理⽅法如下:
(1)缺失值:不完整的数据,其特征是是⼀些应该有的信息缺失,如供应商的名称,分公司的名称,客户的区域信息缺失、业务系统中主表与明细表不能匹配等。需要将这⼀类数据过滤出来,按缺失的内容分别采取定(范围)删(字段)补(数据)。
定范围:哪些字段缺失,缺失范围如何,缺失字段的重要性如何?
删字段:删数据的判断。a、对业务清晰的判断;b、“有⼼杀贼,⽆⼒回天”缺失数据太多。这时候可以看看是否有其他数据可以弥补。
补数据:就是补充缺失值。这⾥有三种补数据的⽅式:A、业务知识惊讶填充;B、使⽤均值、中位数、众数填充;C、使⽤其他渠道补充,如⾝份证前6位是地区=⼿机号归属地。补全后才写⼊数据仓库。
(2)异常值:产⽣原因是业务系统不够健全,在接收输⼊后没有进⾏判断直接写⼊后台数据库造成的,⽐如数值数据输成全⾓数字字符、字符串数据后⾯有⼀个回车、⽇期格式不正确、⽇期越界等。这⼀类数据也要分类,对于类似于全⾓字符、数据前后有不⾯见字符的问题只能写SQL的⽅式出来,然后要求客户在业务系统修正之后抽取;⽇期格式不正确的或者是⽇期越界的这⼀类错误会导致ETL运⾏失败,这⼀类错误需要去业务系统数据库⽤SQL的⽅式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。
(3)重复数据:特别是⼆维表中⽐较常见,将重复的数据的记录所有字段导出来,让客户确认并整理。
(4)数据归⼀化:归⼀化的问题,就是将绝对数变成相对数的问题。因为不同维度的绝对数是没有可⽐性的,这时候需要将绝对数转化成相对⼀个标准的相对数。那如何进⾏归⼀化处理呢?三种⽅式,即最值归⼀化、均值⽅差归⼀化、⾮线性归⼀化。
数据清洗是⼀个反复的过程,不可能在⼏天内完成,只有不断的发现问题,解决问题。对于是否过滤、是否修正⼀般要求客户确认;对于过滤掉的数据,写⼊Excel⽂件或者将过滤数据写⼊数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快的修正错误,同时也可以作为将来验证数据的依据。数据清洗需要注意的是不要将有⽤的数据过滤掉了,对于每个过滤规则认真进⾏验证,并要⽤户确认才⾏。
3、数据转换处理规范
数据转换的任务主要是进⾏不⼀致的数据转换、数据粒度的转换和⼀些商务规则的计算。
(1)不⼀致数据转换,这个过程是⼀个整合的过程,将不同业务系统的相同类型的数据统⼀,⽐如同⼀个供应商在结算系统的编码是
XX0001,⽽在CRM中编码是YY0001,这样在抽取过来之后统⼀转换成⼀个编码。
(2)数据粒度的转换,业务系统⼀般存储⾮常明细的数据,⽽数据仓库中的数据是⽤来分析的,不需要⾮常明细的数据,会将业务系统数据按照数据仓库粒度进⾏聚合。⼀般数据转换有离散化和属性构造两种⽅式。离散化主要分为简单离散、分桶离散、聚类离散、回归平滑四类,属性构造分为特征⼯程和随意构造后筛选。
(3)商务规则的计算,不同的企业有不同的业务规则,不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,供分析使⽤。
4、ETL⽇志与警告发送
(1)ETL⽇志
记录⽇志的⽬的是随时可以知道ETL运⾏情况,如果出错了,出错在那⾥。
ETL⽇志分为三类:
执⾏过程⽇志,是在ETL执⾏过程中每执⾏⼀步的记录,记录每次运⾏每⼀步骤的起始时间,影响了多少⾏数据,流⽔账形式;
是错误⽇志,当某个模块出错的时候需要写错误⽇志,记录每次出错的时间,出错的模块以及出错的信息;
⽇志是总体⽇志,只记录ETL开始时间,结束时间是否成功信息。
如果使⽤ETL⼯具,⼯具会⾃动产⽣⼀些⽇志,这⼀类⽇志也可以作为ETL⽇志的⼀部分。
(2)警告发送
ETL出错了,不仅要写ETL出错⽇志⽽且要向系统管理员发送警告,发送警告的⽅式有多种,常⽤的就是给系统管理员发送邮件,并附上错误信息,便于管理员排查。
六、总结
在这⾥涉及到的ETL中,我们要有⼀个清晰的认识,它不是想象中的简单⼀蹴⽽就,在实际的过程,你可以会遇到各种各样的问题,甚⾄是部门之间沟通的问题。出现以上问题时,可以和团队⼩伙伴或者业务侧⼀起制定解决⽅案,不断完善,只有这样才能保证我们的业务分析结果是准确的,才能指导公司做出正确的决策。

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