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中记录最大的时间,然后根据这个时间去业务系统取大于这个时间的所有记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。
数据的清洗转换
一般情况下,数据仓库分为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出错日志而且要向系统管理员发送警告,发送警告的方式有多种,常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。
原文链接:http://liushaohua543.blog.163.com/blog/static/483202201010162517266/
相关推荐
ETL 设计详解(数据抽取、清洗与转换) ETL(Extract、Transform、Load)是 Business Intelligence(BI)项目中最重要的一个环节,占据整个项目时间的1/3。ETL 的设计分三部分:数据抽取、数据清洗转换、数据加载。...
在BI(Business Intelligence)项目中,ETL扮演着整合数据、为决策支持提供准确信息的角色。通常,ETL约占整个项目工作量的三分之一,其设计的质量直接影响到BI项目的成功与否。 1. 数据抽取(Extract) 数据抽取是...
ETL中的数据清洗设计.pdf ETL交流.pdf ETL培训.ppt ETL工具比较.pdf ETL应用浅析.pdf ETL开发实施中质量保证的关键要素V1.0.pdf ETL数据增量抽取方案.pdf ETL数据集成方案初步研究.pdf ETL架构师面试题.pdf...
### 数据仓库中的ETL与元数据详解 #### 一、数据仓库概述 数据仓库(Data Warehouse, DW)是一种用于存储和管理海量数据的特殊类型的数据库,主要用于支持企业的商业智能(BI)活动,特别是数据分析和决策制定。它通过...
### 数据仓库中的ETL与元数据详解 #### 一、数据仓库基础知识 数据仓库(Data Warehouse, DW)是一种用于存储和管理海量数据的特殊类型的数据库,主要用于支持企业的商业智能(BI)活动,特别是数据分析和决策制定。它...
通过学习这个PPT课件,你将掌握Kettle的使用技巧,理解ETL流程的设计原则,并能应用到实际的数据集成项目中。无论是数据分析师、数据工程师还是BI开发者,都能从中受益,提升自己的数据处理能力。
### 微软BI SSIS 2012 ETL 控件与案例精讲 #### 一、概述 在数据处理领域,尤其是商业智能(Business Intelligence,简称BI)方面,ETL(Extract-Transform-Load)过程是至关重要的环节。ETL指的是从不同的数据源...
ETL是数据仓库建设中的核心环节,负责从不同的数据源中抽取数据,进行必要的清洗、转换和加载至目标数据仓库系统。文档由张赫编写于2009年3月30日,并经过多次修订,目前版本为1.0。 #### 二、ETL增量处理 在ETL...
数据清洗转换是ETL过程中最耗时的部分,约占整个ETL工作的三分之二。这一阶段主要包括数据清洗和数据转换两个方面: 1. **数据清洗**:涉及过滤不符合要求的数据,例如不完整数据、错误数据和重复数据。 - **不...
数据清洗是确保数据质量的关键步骤,虽然在移动集团公司的网络管理场景中,由于数据主要来自不同厂家设备的状态和系统日志,可能不需要大规模的数据清洗,但ETL工具仍然不可或缺,因为它可以统一和整合这些非结构化...
抽取是从源头获取数据,转换是对数据进行清洗和规范化,加载则是将处理后的数据放入数据仓库。 联机分析处理(OLAP)是BI中的另一个重要组成部分,它支持对数据的多维分析,提供快速的“切片”、“ dice”和“钻取...
数据仓库通常从多个业务系统中抽取、转换和加载(ETL)数据,以统一的格式存储,便于进行报表制作和深度分析。数据仓库的设计原则包括数据一致性、时间一致性以及面向主题,确保用户可以方便地获取和理解所需信息。 ...
2. **数据清洗与转换(Transform)**:对抽取的数据进行标准化处理,如代码转换,调整数据粒度,应用业务规则计算。数据清洗包括处理不完整、错误和重复的数据。 3. **数据加载(Load)**:将处理后的数据加载到目标...
- **数据清洗**:检查和修正数据质量问题。 - **数据转换**:根据业务需求对数据进行加工。 - **数据加载**:将处理好的数据加载到目标系统中。 - **监控与优化**:监控作业执行情况,调整性能瓶颈。 **2.5 使用...
- **数据清洗**:清理数据中的错误或不一致的信息,确保数据质量。 - **数据转换**:利用ETL(Extract, Transform, Load)技术将数据转换成统一格式,便于后续分析。 #### 五、报表创建 创建高质量的报表是SAP BI...
- SSIS:作为ETL工具,SSIS提供了强大的数据处理能力,包括数据清洗、转换和加载,确保数据的质量和一致性。 - SSAS:用于构建多维数据集,提供快速查询和复杂分析,支持项目管理人员进行深入的业务洞察。 总结来说...
它能够处理来自不同数据源(如SQL Server、Oracle、DB2、Excel、平面文件等)的数据,并将这些数据清洗、转换后加载到数据仓库中,为后续的数据分析和报告提供支持。 #### 三、ETL高级使用技巧 ##### 多数据源ETL...
- **定义**:数据抽取是指从多个数据源中抽取数据,并将其转换成适合分析的形式,最后加载到数据仓库的过程。 - **关键技术点**: - **互连**:实现不同数据源之间的连接。 - **复制**:将数据从一个地方复制到...
面试中可能涉及的问题包括如何选择数据源、如何处理数据清洗和转换,以及如何优化ETL性能。 3. **数据复制**: 数据复制是确保数据在整个BI系统中同步和一致的重要工具。Data Propagator是一个例子,它可以实现...