ETL初探

初识ETL

概念

ETL即Extract-Transform-Load。目的是将分散、凌乱、异质的数据整合在一起,为决策提供分析数据,是BI项目(Business Intellifence)项目中重要的一个环节,占据1/3左右时间。难点在于清洗转换数据,最终一般存入DW(Data Warehousing)中。

常用的实现方法有

  1. 工具;(如Qracle的OWB,SQL Server 2000 的DTS),工具么,肯定是方便但不灵活。
  2. SQL:编码实现,灵活但复杂
  3. SQL与工具结合:结合两者的优点

数据抽取

要搞清楚数据的来源、数据的特征(数据的结构化、数据量)

不同的来源需要采取对应的措施:

  1. 相同DBMS中的数据,DBMS提供相应的工具或者语句
  2. 不同DBMS,可以通过ODBC建立数据链接、或者从一个数据库中导出txt、json、csv等文件后导入另一个数据库。还可以通过应用程序接口完成(python等)
  3. txt、json、csv文件,采用编程或者某些工具载入数据库

注意:对于数据量大的系统,必须考虑增量抽取(方法待补充)

(1)全量抽取

全量抽取类似于数据迁移或数据复制,它将数据源中的表或视图的数据原封不动的从数据库中抽取出来,并转换成自己的ETL工具可以识别的格式。全量抽取比较简单。

(2)增量抽取

增量抽取只抽取自上次抽取以来数据库中要抽取的表中新增或修改的数据。在ETL使用过程中。增量抽取较全量抽取应用更广。如何捕获变化的数据是增量抽取的关键。对捕获方法一般有两点要求:准确性,能够将业务系统中的变化数据按一定的频率准确地捕获到;性能,不能对业务系统造成太大的压力,影响现有业务。目前增量数据抽取中常用的捕获变化数据的方法有:

常用的方法有:时间戳、全表比对(MD5)、日志对比、触发器等

数据的转换

一半数据仓库分为ODS(Operational Data Store)和DW两个部分。

DW

数据仓库存储是一个面向主题的,反映历史变化数据,用于支撑管理决策。

ODS

操作型数据存储,存储的是当前的数据情况,给使用者提供当前的状态,提供即时性的、操作性的、集成的全体信息的需求。

ODS作为数据库到数据仓库的一种过渡形式,与数据仓库在物理结构上不同,能提供高性能的响应时间,ODS设计采用混合设计方式。

ODS中的数据是"实时值",而数据仓库的数据却是"历史值",一般ODS中储存的数据不超过一个月,而数据仓库为10年或更多.

从业务系统到ODS做清洗,将脏数据和不完整的数据过滤掉,从ODS到DW的过程中转换,进行一些业务规则的计算和聚合。

1、 数据清洗

  数据清洗的任务是过滤那些不符合要求的数据,将过滤的结果交给业务主管部门,确认是否过滤掉还是由业务单位修正之后再进行抽取。数据清洗是一个反复的过程,只有不断的发现问题,解决问题。对于是否过滤,

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

2、 数据转换

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

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

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

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

3、数据装载

将转换和加工后的数据装载到目的库中通常是ETL过程的最后步骤。装载数据的最佳方法取决于所执行操作的类型以及需要装入多少数据。当目的库是关系数据库时,一般来说有两种装载方式:

(1)直接SQL语句进行insert、update、delete操作。

(2)采用批量装载方法,如bcp、bulk、关系数据库特有的批量装载工具或api。

大多数情况下会使用第一种方法,因为它们进行了日志记录并且是可恢复的。但是,批量装载操作易于使用,并且在装入大量数据时效率较高。使用哪种数据装载方法取决于业务系统的需要。

ETL工具选择

在数据集成中该如何选择ETL工具呢?一般来说需要考虑以下几个方面:

(1)对平台的支持程度。

(2)对数据源的支持程度。

(3)抽取和装载的性能是不是较高,且对业务系统的性能影响大不大,倾入性高不高。

(4)数据转换和加工的功能强不强。

(5)是否具有管理和调度功能。

(6)是否具有良好的集成性和开放性

借鉴了几篇文章,表示感谢。

猜你喜欢

转载自www.cnblogs.com/for-ever-ly/p/10941537.html
ETL
今日推荐