Atitit etl之道 attilax著 1. ETL 1 1.1. (数据仓库技术) 2 1.2. ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性

Atitit etl之道 attilax

 

1. ETL 1

1.1. (数据仓库技术) 2

1.2. ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性 2

2. Etl使用场合 实现bi 2

3. ETL的实现有多种方法,常用的有三种。 3

3.1. 一种是借助ETL工具(OracleOWBSQL Server 2000DTSSQL Server2005SSIS服务、Informatic)实现, 3

3.2. 一种是SQL方式实现, 3

3.3. 另外一种是ETL工具和SQL相结合。 3

4. 首先要实现ETL转换的过程。 3

4.1. 空值处理: 3

4.2. 规范化数据格式: 3

4.3. 拆分数据 3

4.4. 验证数据正确性: 4

4.5. 数据替换: 4

4.6. Lookup 4

4.7. 建立ETL过程的主外键约束 4

5. 体系结构ETL工具目前有两种技术架构——ETL架构和ELT架构 4

5.1.1. ETL架构 4

5.1.2. ELT架构 5

5.2. 注意事项 6

6. 一、 数据的抽取(Extract 6

6.1. 1、对于与存放DW的数据库系统相同的数据源处理方法 7

6.2. 2、对于与DW数据库系统不同的数据源的处理方法 7

6.3. 对于文件类型数据源(.txt,.xls) 7

6.4. 4、增量更新的问题 7

7. 二、数据的清洗转换(CleaningTransform 7

7.1. 1、 数据清洗 8

7.2. 不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。 8

7.3. 2、 数据转换  数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。 8

8. 三、ETL日志、警告发送 9

9. ETL有几个特点, 9

9.1. 一是数据同步, 9

9.2. 二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成ETL 10

 

 

1. ETL

 

1.1. (数据仓库技术)

 编辑

ETL,是英文 Extract-Transform-Load 的缩写,用来描述将数据从来源端经过抽取(extract)、转换(transform)、加载(load)至目的端的过程。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

ETL是构建数据仓库的重要一环,用户从数据源抽取出所需的数据,经过数据清洗,最终按照预先定义好的数据仓库模型,将数据加载到数据仓库中去。

信息是现代企业的重要资源,是企业运用科学管理、决策分析的基础。目前,大多数企业花费大量的资金和时间来构建联机事务处理OLTP的业务系统和办公自动化系统,用来记录事务处理的各种相关数据。据统计,数据量每23年时间就会成倍增长,这些数据蕴含着巨大的商业价值,而企业所关注的通常只占在总数据量的2%4%左右。因此,企业仍然没有最大化地利用已存在的数据资源,以至于浪费了更多的时间和资金,也失去制定关键商业决策的最佳契机。于是,企业如何通过各种技术手段,并把数据转换为信息、知识,已经成了提高其核心竞争力的主要瓶颈。而ETL则是主要的一个技术手

 

1.2. ETL的质量问题具体表现为正确性、完整性、一致性、完备性、有效性、时效性和可获取性等几个特性

2. Etl使用场合 实现bi

ETL是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。 ETLBI项目重要的一个环节。 通常情况下,在BI项目中ETL会花掉整个项目至少1/3的时间,ETL设计的好坏直接关接到BI项目的成败。

 

ETL的设计分三部分:数据抽取、数据的清洗转换、数据的加载。在设计ETL的时候我们也是从这三部分出发。数据的抽取是从各个不同的数据源抽取到ODS(Operational Data Store,操作型数据存储)——这个过程也可以做一些数据的清洗和转换),在抽取的过程中需要挑选不同的抽取方法,尽可能的提高ETL的运行效率。ETL三个部分中,花费时间最长的是“T”(Transform,清洗、转换)的部分,一般情况下这部分工作量是整个ETL2/3。数据的加载一般在数据清洗完了之后直接写入DW(Data Warehousing,数据仓库)中去。

3. ETL的实现有多种方法,常用的有三种。

3.1. 一种是借助ETL工具(如Oracle的OWB、SQL Server 2000的DTS、SQL Server2005的SSIS服务、Informatic等)实现,

3.2. 一种是SQL方式实现,

3.3. 另外一种是ETL工具和SQL相结合。

前两种方法各有各的优缺点,借助工具可以快速的建立起ETL工程,屏蔽了复杂的编码任务,提高了速度,降低了难度,但是缺少灵活性。SQL的方法优点是灵活,提高ETL运行效率,但是编码复杂,对技术要求比较高。第三种是综合了前面二种的优点,会极大地提高ETL的开发速度和效率。

 

4. 首先要实现ETL转换的过程。

体现为以下几个方面:

4.1. 空值处理:

1、可捕获字段空值,进行加载或替换为其他含义数据,并可根据字段空值实现分流加载到不同目标库。

4.2. 规范化数据格式:

2、可实现字段格式约束定义,对于数据源中时间、数值、字符等数据,可自定义加载格式。

4.3. 拆分数据

3、:依据业务需求对字段可进行分解。例,主叫号 861082585313-8148,可进行区域码和电话号码分解。

4.4. 验证数据正确性:

4、可利用Lookup及拆分功能进行数据验证。例如,主叫号861082585313-8148,进行区域码和电话号码分解后,可利用Lookup返回主叫网关或交换机记载的主叫地区,进行数据验证。

4.5. 数据替换:

5、对于因业务因素,可实现无效数据、缺失数据的替换。

4.6. Lookup:

6、查获丢失数据 Lookup实现子查询,并返回用其他手段获取的缺失字段,保证字段完整性。

4.7. 建立ETL过程的主外键约束

7、:对无依赖性的非法数据,可替换或导出到错误数据文件中,保证主键唯一记录的加载。

 

 

 

5. 体系结构ETL工具目前有两种技术架构——ETL架构和ELT架构

编辑

ETL工具目前有两种技术架构——ETL架构和ELT架构,不仔细看好像没什么不同之处,那么这两种架构到底有什么区别呢?[1] 

5.0.1. ETL架构

 

ETL架构中,数据的流向是从源数据流到ETL工具,ETL工具是一个单独的数据处理引擎,一般会在单独的硬件服务器上,实现所有数据转化的工作,然后将数据加载到目标数据仓库中,如果要增加整个ETL过程的效率,则只能增强ETL工具服务器的配置,优化系统处理流程(一般可调的东西非常少)。IBMdatastageInformaticapowercenter原来都是采用的这种架构。

ETL架构的优势:

00001. 

ETL可以分担数据库系统的负载(采用单独的硬件服务器)

00002. 

00003. 

ETL相对于EL-T架构可以实现更为复杂的数据转化逻辑

00004. 

00005. 

ETL采用单独的硬件服务器。.

00006. 

00007. 

ETL与底层的数据库数据存储无关。

00008. 

5.0.2. ELT架构

 

ELT架构中,ELT只负责提供图形化的界面来设计业务规则,数据的整个加工过程都在目标和源的数据库之间流动,ELT协调相关的数据库系统来执行相关的应用,数据加工过程既可以在源数据库端执行,也可以在目标数据仓库端执行(主要取决于系统的架构设计和数据属性)。当ETL过程需要提高效率,则可以通过对相关数据库进行调优,或者改变执行加工的服务器就可以达到。一般数据库厂商会力推该中架构,像OracleTeradata都极力宣传ELT架构。

ELT架构的优势:

00001. 

ELT主要通过数据库引擎来实现系统的可扩展性(尤其是当数据加工过程在晚上时,可以充分利用数据库引擎的资源)

00002. 

00003. 

ELT可以保持所有的数据始终在数据库当中,避免数据的加载和导出,从而保证效率,提高系统的可监控性。

00004. 

00005. 

ELT可以根据数据的分布情况进行并行处理优化,并可以利用数据库的固有功能优化磁盘I/O

00006. 

00007. 

ELT的可扩展性取决于数据库引擎和其硬件服务器的可扩展性。

00008. 

00009. 

通过对相关数据库进行性能调优,ETL过程获得34倍的效率提升一般不是特别困难。

00010. 

5.1. 注意事项

编辑

为了能更好地实现ETL,用户在实施ETL过程中应注意以下几点:

第一,如果条件允许,可利用数据中转区对运营数据进行预处理

6. 一、 数据的抽取(Extract

  这一部分需要在调研阶段做大量的工作,首先要搞清楚数据是从几个业务系统中来,各个业务系统的数据库服务器运行什么DBMS,是否存在手工数据,手工数据量有多大,是否存在非结构化的数据等等,当收集完这些信息之后才可以进行数据抽取的设计。

6.1. 1、对于与存放DW的数据库系统相同的数据源处理方法

  这一类数据源在设计上比较容易。一般情况下,DBMS(SQLServerOracle)都会提供数据库链接功能,在DW数据库服务器和原业务系统之间建立直接的链接关系就可以写Select 语句直接访问。

6.2. 2、对于与DW数据库系统不同的数据源的处理方法

  对于这一类数据源,一般情况下也可以通过ODBC的方式建立数据库链接——SQL ServerOracle之间。如果不能建立数据库链接,可以有两种方式完成,一种是通过工具将源数据导出成.txt或者是.xls文件,然后再将这些源系统文件导入到ODS中。另外一种方法是通过程序接口来完成。

  

6.3. 对于文件类型数据源(.txt,.xls),

3、

4、可以培训业务人员利用数据库工具将这些数据导入到指定的数据库,然后从指定的数据库中抽取。或者还可以借助工具实现。

6.4. 4、增量更新的问题

  对于数据量大的系统,必须考虑增量抽取。一般情况下,业务系统会记录业务发生的时间,我们可以用来做增量的标志,每次抽取之前首先判断ODS中记录最大的时间,然后根据这个时间去业务系统取大于这个时间所有的记录。利用业务系统的时间戳,一般情况下,业务系统没有或者部分有时间戳。

7. 二、数据的清洗转换(CleaningTransform

  一般情况下,数据仓库分为ODSDW两部分。通常的做法是从业务系统到ODS做清洗,将脏数据和不完整数据过滤掉,在从ODSDW的过程中转换,进行一些业务规则的计算和聚合。

7.1. 1、 数据清洗

  数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。

7.2. 不符合要求的数据主要是有不完整的数据、错误的数据、重复的数据三大类。

(1)不完整的数据:这一类数据主要是一些应该有的信息缺失,如供应商的名称、分公司的名称、客户的区域信息缺失、业务系统中主表与明细表不能匹配等。对于这一类数据过滤出来,按缺失的内容分别写入不同Excel文件向客户提交,要求在规定的时间内补全。补全后才写入数据仓库。

(2)错误的数据:这一类错误产生的原因是业务系统不够健全,在接收输入后没有进行判断直接写入后台数据库造成的,比如数值数据输成全角数字字符、字符串数据后面有一个回车操作、日期格式不正确、日期越界等。这一类数据也要分类,对于类似于全角字符、数据前后有不可见字符的问题,只能通过写SQL语句的方式找出来,然后要求客户在业务系统修正之后抽取。日期格式不正确的或者是日期越界的这一类错误会导致ETL运行失败这一类错误需要去业务系统数据库用SQL的方式挑出来,交给业务主管部门要求限期修正,修正之后再抽取。

(3)重复的数据:对于这一类数据——特别是维表中会出现这种情况——将重复数据记录的所有字段导出来,让客户确认并整理。

  数据清洗是一个反复的过程,不可能在几天内完成,只有不断的发现问题,解决问题。对于是否过滤,是否修正一般要求客户确认,对于过滤掉的数据,写入Excel文件或者将过滤数据写入数据表,在ETL开发的初期可以每天向业务单位发送过滤数据的邮件,促使他们尽快地修正错误,同时也可以做为将来验证数据的依据。数据清洗需要注意的是不要将有用的数据过滤掉,对于每个过滤规则认真进行验证,并要用户确认。

7.3. 2、 数据转换  数据转换的任务主要进行不一致的数据转换、数据粒度的转换,以及一些商务规则的计算。

(1)不一致数据转换:这个过程是一个整合的过程,将不同业务系统的相同类型的数据统一,比如同一个供应商在结算系统的编码是XX0001,而在CRM中编码是YY0001,这样在抽取过来之后统一转换成一个编码。

(2)数据粒度的转换:业务系统一般存储非常明细的数据,而数据仓库中数据是用来分析的,不需要非常明细的数据。一般情况下,会将业务系统数据按照数据仓库粒度进行聚合。

(3)商务规则的计算不同的企业有不同的业务规则、不同的数据指标,这些指标有的时候不是简单的加加减减就能完成,这个时候需要在ETL中将这些数据指标计算好了之后存储在数据仓库中,以供分析使用。

8. 三、ETL日志、警告发送

1ETL日志

ETL日志分为三类。

一类是执行过程日志,这一部分日志是在ETL执行过程中每执行一步的记录,记录每次运行每一步骤的起始时间,影响了多少行数据,流水账形式。

一类是错误日志,当某个模块出错的时候写错误日志,记录每次出错的时间、出错的模块以及出错的信息等。

第三类日志是总体日志,只记录ETL开始时间、结束时间是否成功信息。如果使用ETL工具,ETL工具会自动产生一些日志,这一类日志也可以作为ETL日志的一部分。

记录日志的目的是随时可以知道ETL运行情况,如果出错了,可以知道哪里出错。

2、 警告发送

  如果ETL出错了,不仅要形成ETL出错日志,而且要向系统管理员发送警告。发送警告的方式多种,一般常用的就是给系统管理员发送邮件,并附上出错的信息,方便管理员排查错误。

ETLBI项目的关键部分,也是一个长期的过程只有不断的发现问题并解决问题,才能使ETL运行效率更高,为BI项目后期开发提供准确与高效的数据。

后记

     做数据仓库系统,ETL是关键的一环。说大了,ETL是数据整合解决方案,说小了,就是倒数据的工具回忆一下工作这么长时间以来,处理数据迁移、转换的工作倒还真的不少。但是那些工作基本上是一次性工作或者很小数据量。可是在数据仓库系统中,ETL上升到了一定的理论高度,和原来小打小闹的工具使用不同了。究竟什么不同,从名字上就可以看到,人家已经将倒数据的过程分成3个步骤,ETL分别代表抽取、转换和装载。

其实ETL过程就是数据流动的过程,从不同的数据源流向不同的目标数据。但在数据仓库中,

9. ETL有几个特点,

9.1. 一是数据同步

它不是一次性倒完数据就拉到,它是经常性的活动,按照固定周期运行的,甚至现在还有人提出了实时ETL的概念。

9.2. 二是数据量,一般都是巨大的,值得你将数据流动的过程拆分成ETL

    现在有很多成熟的工具提供ETL功能,且不说他们的好坏。从应用角度来说,ETL的过程其实不是非常复杂,这些工具给数据仓库工程带来和很大的便利性,特别是开发的便利和维护的便利。但另一方面,开发人员容易迷失在这些工具中。举个例子,VB是一种非常简单的语言并且也是非常易用的编程工具,上手特别快,但是真正VB的高手有多少?微软设计的产品通常有个原则是将使用者当作傻瓜,在这个原则下,微软的东西确实非常好用,但是对于开发者,如果你自己也将自己当作傻瓜,那就真的傻了。ETL工具也是一样,这些工具为我们提供图形化界面,让我们将主要的精力放在规则上,以期提高开发效率。从使用效果来说,确实使用这些工具能够非常快速地构建一个job来处理某个数据,不过从整体来看,并不见得他的整体效率会高多少。问题主要不是出在工具上,而是在设计、开发人员上。他们迷失在工具中,没有去探求ETL的本质。可以说这些工具应用了这么长时间,在这么多项目、环境中应用,它必然有它成功之处,它必定体现了ETL的本质。如果我们不透过表面这些工具的简单使用去看它背后蕴涵的思想,最终我们作出来的东西也就是一个个独立的job,将他们整合起来仍然有巨大的工作量。大家都知道理论与实践相结合,如果在一个领域有所超越,必须要在理论水平上达到一定的高度.

人一定要靠自己

分类数据仓库

好文要顶 关注我 收藏该文 

 

posted @ 2018-02-08 21:38  attilaxAti  阅读(113)  评论(0编辑  收藏  举报