资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,ETL,进阶,2009,年,11,月,26,日,2,目录,一,.,什么是,ETL,二,.ETL,数据转换系统能给客户带来什么,三,.ETL,如何工作的,3,ETL,,,Extraction-Transformation-Loading,的缩写,中文名称为数据抽取、转换和加载。,ETL,负责将分布的、异构数据源中的数据如关系数据、平面数据文件等抽取到临时中间层后进行清洗、转换、集成,最后加载到数据仓库或数据集市中,成为联机分析处理、数据挖掘的基础。,ETL,是数据仓库中的非常重要的一环。它是承前启后的必要的一步。相对于关系数据库,数据仓库技术没有严格的数学理论基础,它更面向实际工程应用。所以从工程应用的角度来考虑,按着物理数据模型的要求加载数据并对数据进行一些系列处理,处理过程与经验直接相关,同时这部分的工作直接关系数据仓库中数据的质量,从而影响到联机分析处理和数据挖掘的结果的质量。,数据仓库是一个独立的数据环境,需要通过抽取过程将数据从联机事务处理环境、外部数据源和脱机的数据存储介质导入到数据仓库中;在技术上,,ETL,主要涉及到关联、转换、增量、调度和监控等几个方面;数据仓库系统中数据不要求与联机事务处理系统中数据实时同步,所以,ETL,可以定时进行。但多个,ETL,的操作时间、顺序和成败对数据仓库中信息的有效性至关重要,。,一,.,什么是,ETL,4,ETL,是数据抽取(,Extract,)、转换(,Transform,)、清洗(,Cleansing,)、装载(,Load,)的过程。是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。,信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理,OLTP,的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每,2,3,年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的,2,4,左右。因此,企业仍然没有最大化地利用已存在的数据资源,以致于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而,ETL,则是主要的一个技术手段。如何正确选择,ETL,工具?如何正确应用,ETL,?,目前,,ETL,工具的典型代表有,:Informatica,、,Datastage,、,OWB,、微软,DTS,数据集成:快速实现,ETL,ETL,的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性。而影响质量问题的原因有很多,由系统集成和历史数据造成的原因主要包括,:,业务系统不同时期系统之间数据模型不一致;业务系统不同时期业务过程有变化;旧系统模块在运营、人事、财务、办公系统等相关信息的不一致;遗留系统和新业务、管理系统数据集成不完备带来的不一致性。,实现,ETL,,首先要实现,ETL,转换的过程。它可以集中地体现为以下几个方面:,空值处理 可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。,规范化数据格式 可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。,拆分数据 依据业务需求对字段可进行分解。例,主叫号,861084613409,,可进行区域码和电话号码分解。,验证数据正确性 可利用,Lookup,及拆分功能进行数据验证。例如,主叫号,861084613409,,进行区域码和电话号码分解后,可利用,Lookup,返回主叫网关或交换机记载的主叫地区,进行数据验证。,6,2.ETL,数据转换系统能给客户带来什么,7,社会的需求和计算机技术的不断发展,人们开始对原来数据库中的数据进行再加工,形成一个综合的、面向分析的环境,以支持科学决策的产生。由此,数据仓库的思想、技术、产品逐渐开始形成。构建数据仓库的目的是要建立一种体系化的数据存贮环境,将分析决策所需的大量数据从传统的操作环境中分离出来,使分散的、不一致的操作数据转换成集成的、统一的信息,组织内不同单位都可以在单一的环境下,通过运用其中的数据与信息,发现全新的视野和新的问题、新的分析与想法,进而发展出制度化的决策系统,并获取更多经营效益。数据仓库提供用户用于决策支持的当前和历史数据,这些数据在传统的操作型数据库中很难或不能得到。,构建企业数据仓库,需要将企业中拥有的各种类型的数据经过必要的转化、整理后,定期的、批量的装载到数据仓库中。因为企业的数据来源多样,各种数据来源之间的规范并不完全一致,所以数据的转化、整理和装载需要有一套完整、功能强大的软件系统支撑,这就需要,ETL,工具。,ETL,解决如下问题:,(,1,)能够从各种不同的数据源中读取数据。通过预置,SQL Server,、,Oracle,、,Access,等常用数据源连接,能够从数据源中直接获取数据。系统还提供了强大的扩展能力,针对,DBF,、,Excel,、文本文件等形式的平面文件,系统可以根据需要随时增加各种数据源。,(,2,)规范化数据访问接口。,eBuilder,数据转换系统的数据获取做到了多样化,而所有的数据处理都是通过规范的数据接口来访问,保证了异构数据库环境下,数据间的自由转换和存储。,8,(,3,)可视化的数据抽取过程定义。数据抽取过程都是面向抽象的数据库底层,,eBuilder,数据转换系统提供了完善的可视化数据抽取过程定义,极大的降低了数据抽取过程设计的门槛,不但提高了设计数据抽取过程的效率,而且使数据抽取过程更加安全可靠。,(,4,)集成数据库建模能力,用于构建数据仓库。数据仓库的构建不是一朝一夕就能够完成的,而是需要循环往复的增加、修改等迭代过程,因此,ETL,中集成数据库建模能力就显得至关重要。,ETL,在后台集成了数据库建模能力,可以根据用户生成的结果集在数据库中创建相应的数据表,使数据仓库的建模不会因为字段类型不匹配而造成数据抽取过程的失败。,(,5,)侦测业务数据库中发生的变化,用于数据更新。数据仓库的数据来源于业务数据库,而业务数据库一般不保留对数据的增删改操作,而每次都将数据仓库中的数据清空重来,又是不现实的,这就需要数据抽取工具具有自动侦测业务数据库中发生的变化,将业务数据库中发生了增删改的数据,通过增量文件形式抽取出来。,(,6,)能够让数据库抽取工作自动定期执行,一旦配置完成无需人工干预。数据仓库的数据是批量装载的,需要耗费大量的时间,而且会对业务数据库的运行产生压力,因此数据抽取过程要求在业务数据库空闲的时间内执行。,ETL,提供了完整的任务调度能力,用户可以根据业务数据库的运行规律,设定数据抽取过程在业务空闲的时间自动运行。,(,7,)一旦一个单位的数据仓库构建完毕,就可以着手建设基于数据仓库的应用了,如,OLAP,。接下来就是给单位的决策带来实际的好处:节省时间、可能挖掘出你从未想过的思路,如啤酒和尿布的故事。给你单位带来实际的效益,而效益正式信息化的最终目的!,9,三,.Etl,如何工作的,10,ETL,是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。,ETL,是,BI,项目重要的一个环节。通常情况下,在,BI,项目中,ETL,会花掉整个项目的,1/3,的时间,ETL,设计的好坏直接关接到,BI,项目的成败。,ETL,的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计,ETL,的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到,ODS(OperationalDataStore,,操作型数据存储,),中,这个过程也可以做一些数据的清洗和转换,),,在抽取的过程中需要挑选不同的抽取方法,尽可能的提高,ETL,的运行效率。,ETL,三个部分中,花费时间最长的是“,T”(Transform,,清洗、转换,),的部分,一般情况下这部分工作量是整个,ETL,的,2/3,。数据的加载一般在数据清洗完了之后直接写入,DW(DataWarehousing,,数据仓库,),中去。,ETL,的实现有多种方法,常用的有三种。一种是借助,ETL,工具实现,一种是,SQL,方式实现,另外一种是,ETL,工具和,SQL,相结合。前两种方法各有各的优缺点,借助工具可以快速的建立起,ETL,工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。,SQL,的方法优点是灵活,提高,ETL,运行效率,但是编码复杂,对技术要求比较高。第三种是综合了前面二种的优点,会极大地提高,ETL,的开发速度和效率。,11,一、数据抽取,这一部分需要在调研阶段做大量的工作,首先要搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么,DBMS,是否存在手工数据,手工数据量有多大,是否存在非结构化的数据等等,当收集完这些信息之后才可以进行数据抽取的设计。,1,、对于与存放,DW,的数据库系统相同的数据源处理方法,这一类数据源在设计上比较容易。一般情况下,,DBMS(SQLServer,、,Oracle),都会提供数据库链接功能,在,DW,数据库服务器和原业务系统之间建立直接的链接关系就可以写,select,语句直接访问。,2,、对于与,DW,数据库系统不同的数据源的处理方法,对于这一类数据源,一般情况下也可以通过,ODBC,的方式建立数据库链接,如,SQLServer,和,Oracle,之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成,.txt,或者是,.xls,文件,然后再将这些源系统文件导入到,ODS,中。另外一种方法是通过程序接口来完成。,3,、对于文件类型数据源,(.txt,.xls),,可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现,如,SQLServer2005,的,SSIS,服务的平面数据源和平面目标等组件导入,ODS,中去。,4,、增量更新的问题,对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断,ODS,中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。,12,二、数据的清洗转换,一般情况下,数据仓库分为,ODS,、,DW,两部分。通常的做法是从业务系统到,ODS,做清洗,将脏数据和不完整数据过滤掉,在从,ODS,到,DW,的过程中转换,进行一些业务规则的计算和聚合。,1,、数据清洗,数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。,(1),不完整的数据:这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同,Excel,文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。,(2),错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写,SQL,语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致,ETL,运行失败,这一类错误需要去业务系统数据库用,SQL,的方式挑出来,交
展开阅读全文