本文转自:https://www.cnblogs.com/yjd_hycf_space/p/7772722.html
ETL讲解(很详细!!!)
ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。
目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。
在设计ETL的时候也是从这三部分出发。
〇、ETL的实现有多种方法,常用的有三种。
(1)借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现,
(2)SQL方式实现,
(3)ETL工具和SQL相结合。
优缺点:
(1)借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。
(2)SQL的方法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。
(3)兼备前2种的优点,会极大地提高ETL的开发速度和效率。
一、 数据的抽取(Extract)
需在调研阶段做大量工作,搞清楚数据从几个业务系统中来,各业务系统的数据库服务器运行什么DBMS,是否存在手工数据,手工数据量有多大,是否存在非结构化数据等。
1、与存放DW的数据库相同的数据源时
这一类数据源在设计上比较容易。一般情况下,DBMS(SQLServer、Oracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。
2、与DW数据库不同的数据源时
对于这一类数据源,一般情况下也可以通过ODBC的方式建立数据库链接,如:SQL Server、Oracle之间。
如果不能建立数据库链接,可以有两种方式完成:
(1)通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。
(2)通过程序接口来完成。
3、文件类型数据源(.txt,.xls),
可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现。
4、增量更新的问题
对于数据量大的系统,必须考虑增量抽取。
一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。
利用业务系统的时间戳。
二、数据的清洗转换(Cleaning、Transform)
数据清洗是一个反复的过程。
一般情况下,数据仓库分为ODS、DW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。
1、 数据清洗
数据清洗的任务是过滤掉不符合要求的数据,主要是有不完整的数据、错误的数据、重复的数据三大类。
(1)不完整的数据:
这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。
对于这类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,补全后才写入数据仓库。
(2)错误的数据:
这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等,数据修正之后再抽取。
(3)重复的数据:
特别是维表中会出现这种情况,将重复数据记录的所有字段导出来,让客户确认并整理。
2、 数据转换
数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。
(1)不一致数据转换:
这是一个整合的过程,将不同业务系统的相同类型的数据统一。比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。
(2)数据粒度的转换:
业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。
(3)商务规则的计算:
不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。
三、ETL日志、警告发送
1、 ETL日志
记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。
ETL日志分为三类。
(1)执行过程日志:在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。
(2)错误日志:当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。
(3)日志是总体日志:只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。
2、 警告发送
如果ETL出错了,不仅要形成ETL出错日志,而且要向系统管理员发送警告。发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。
后记
E、T、L分别代表抽取、转换和装载。
其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。
ETL特点:
(1)数据同步,它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。
(2)数据量,一般都是巨大的,值得你将数据流动的过程拆分成E、T和L。