ETL概述

来源:互联网 发布:谷歌优化好的公司 编辑:程序博客网 时间:2024/05/17 08:48

一、ETL介绍


    ETL分别是三个单词的首字母缩写(Extract/Transform/Load)也就是抽取、转换、装载。ETL包含了三方面,首先是‘抽取’:将数据从各种原始的业务系统中读取出来,这是所有工作的前提。其次‘转换’:按照预先设计好的规则将抽取的数据进行转换,本来异构的数据格式能统一起来。最后的‘装载’:将转换后的数据按计划增量或全部导入到数据仓库中。


二、ETL过程


    1、数据抽取


    数据抽取就是从源系统中获取业务数据的过程。在数据抽取过程中,被抽取的数据要满足系统中模型对数据的分析需求,为保证不影响系统的性能,数据抽取时必须考虑抽取方式,抽取时间和抽取周期等因素。抽取方式方面包括增量抽取和全量抽取,这点要根据项目的实际业务需求。在数据抽取之前,必须了解数据量的大小,业务系统中每张表的数据结构,字段含义,表之间的关联关系等信息,掌握这些信息后才能进行数据抽取工作。数据抽取有下面3种情况。
   (1)如果业务操作型源数据库和目标数据库之间的数据库管理系统完全相同,那么只需建立相应的连接关系就可以使用ETL工具直接访问,或者调用相应的SQL语句和存储过程。
   (2)如果业务操作型源数据库和目标数据库之间的数据库管理系统不相同,那么就需要使用ETL工具从业务操作型源数据库中把所需数据导出成文本文件或者Excel文件,然后再使用ETL工具对导出的数据进行统一的数据抽取。
   (3)如果需要抽取的数据量非常庞大,这种情况下,必须考虑增量抽取,首先用标记位或者时间戳的形式,每次抽取前首先判断是否是抽取标记位或者是当前最近的时间,然后再将数据源的数据抽取出来。

    

    2、数据清洗


    数据清洗的目的就是选择出有缺陷的数据,然后再将他们正确化和规范化,从而使业务模型所需的数据符合数据质量标准。数据缺陷包括以下几种情况:
   (1)数据重复;
   (2)数据错误;
   (3)数据范围混淆;
   (4)存在“脏”数据;
   (5)数据不一致。
    其中数据重复是指标准不唯一,很多数值都代表着相同的含义。数据范围混淆是指相同的数值会应用到不同的场合中,代表着不同的含义。
    数据清洗的流程包括以下几个方面:
   (1)定义业务数据源:标示出满足需求的数据源,并且决定什么时候进行数据清洗。
   (2)分析业务数据源:分析数据源的数据是否符合业务的规则和定义,是否存在非正常的数据结构。
   (3)将数据标准化:定义标准化格式的数据,并且加以转换。
   (4)通过业务规则修正错误数据:定义是否为正确数据的标准,确定处理错误数据的方法。
   (5)合并数据:将属于同一实体的多个数据进行合并,合并是有去重的功能。
   (6)总结数据错误类型:通过总结数据出错的类型,提高清洗程序的完整性和正确性,从而降低数据出现重大问题的可能性。

              
 
 

     3、数据转换


     数据的转换时指从业务系统中抽取出源数据,然后再根据业务模型的需求,进行一系列数据转换的过程。
     ETL的转换过程包括以下几个方面:
    (1)对空值的处理:如果在转换过程中捕获到某些字段存在空值,在进行加载时需要将空值替换成某一数值或者直接进行加载,不做任何转换。
    (2)对数据格式的规范化:根据业务数据源中各个字段的数据类型,进行数据格式的规范和统一。例如,统一将数值类型转化成字符串类型。
    (3)根据业务需求进行字段的拆分或者合并。
    (4)对缺失数据的替换。
    (5)根据业务规则对数据进行过滤。
    (6)根据编码表进行数据唯一性的转换:根据编码表制定的业务规范进行数据的转换,实现建模数据库系统内部数据的一致性。

  

     数据转换如下图:

     


     4、数据加载

    

    过程就是把已经转换完成的数据,存放在目标数据库的过程。这是ETL过程中的最后一步,需要保证加载工具必须具有高效的性能去完成数据加载,同时还需要考虑数据加载的周期和数据加载的策略。数据加载策略包括时间戳的加载方式,全表对比的加载方式,通过读取日志表进行加载的方式,去表删除后再进行加载的方式。

 
    图为数据加载策略
             

    时间戳的加载方式是通过对源系统的表添加时间戳字段,将系统当前时间和时间戳的值进行对比,决定哪些业务数据需要被抽取,可以实现数据的递增加载。
    全表对比的加载方式是在数据加载前,将每条数据都与目标表的所有记录进行全表对比,根据主键值是否相同,判断数据时更新还是插入,但是这种方法有一个缺点就是当数据量比较大的时候,耗时长,效率低。所以通常会对全表对比进行改进,采用版本号,标记字段等缓慢变化维的形式进行增量抽取。
    读取日志表的加载方式是当源数据表发生变化时,不断更新日志表的信息,日志表的信息作为数据加载的一个依据。
全表删除后在插入的加载方式是在数据加载前,先删除目标表的所有数据,然后再去加载全部的数据。

    5、ETL的日志    

    ETL的日志主要记录ETL执行过程中的每一步信息,包括运行的起始时间和结束时间,历史数据的抽取记录,数据抽取的行数和运行到某一步的出错信息,出错时间等内容。这些信息是ETL工具自动产生的,帮助系统维护人员进行监控,如果ELT过程出现错误,会形成错误日志,系统管理员可以通过邮件或者其他方式接受到该错误信息,然后对该错误及时进行处理。


    6、Informatica的异常处理


    数据异常
   (1)将错误信息单独输出,继续执行ETL,错误数据修改后再单独加载
   (2)中断ETL,修改后重新执行ETL
   (3)原则:最大限度接收数据
    环境异常
    对于网络中断等外部原因造成的异常,设定尝试次数或尝试时间,超数或超时后,由外部人员手工干预。
    其他异常
    例如源数据结构改变、接口改变等异常状况,应进行同步后,再装载数据
0 0
原创粉丝点击