谈谈我对ETL的理解

1、什么是ETL

ETL的全称是抽取(Extract)、清洗(Cleaning)、转换(Transform)、装载(Load)。那么在企业的信息化建设过程中,为什么需要有ETL这一个过程。这是因为在信息化建设的过程中,数据是最能提现一个企业的信息化程度的。这就引出了第二个问题,数据是从何而来的?就笔者的经历而言,一般数据都是来自于不同的生产系统,比如说,银行的数据就来自于多个系统:核心系统、柜面系统、票据系统、第三方数据源等系统的,不同源系统根据其功能的不同,源源不断的产生着新数据,为企业提供了大量的服务。但是这些源系统就像一个个数据孤岛,彼此之间并无关联,这就给业务人员或者管理者提出了第一个难度,我在跟进A业务的时候,需要去访问源系统,在跟进B业务的时候,需要去访问源系统B,如果我要跟进很多条业务线,是不是就要逐一去访问各个不同的源系统呢?第二个难度在于,每个源系统的厂商不尽相同,故其各自的环境也都不太一样,如果要去访问所有的源系统的话,学习的成本和难度会大大增加。那么能不能有这么一套系统,能够将所有的源系统都囊括在这一个系统中呢?答案是:有的!这个地方就称为数据仓库而ETL要做的事情,就是按照数据仓库的规则和要求,对各个源系统的数据进行加工和整合,并且将各个源系统的数据存储到数据仓库中。

2、ETL的流程

2.1、数据抽取与清洗

这一环节的主要工作是获取源系统的数据,并按照数据仓库的规则,进行数据加工,对不完整的数据、错误的数据、重复的数据进行处理,最终提取出我们想要的数据。

2.2、数据转换

数据转化要解决两个问题。

一是数据不一致。具体包括数据类型不一致、数据格式不一致、编码不一致等。

二是数据粒度的转换。源系统和数据仓库对于业务的抽象粒度不一致。源系统是业务的生产者,故其对业务的抽象程度较低,换言之,源系统存储了很详细的明细数据。而数据仓库则是给业务人员或者数据从业者提供一个平台来分析数据的,故其对业务的抽象程度较高,存储的都是进过一定程度汇总的数据。

2.3、数据加载

当前两个问题都解决完了之后,接下来就进行数据的加载,进行数据加载需要明确以下几个问题。

一是作业加载方式:全量加载还是增加更新。

二是任务触发方式:时间触发还是事件触发。如果是时间触发的话,还需要确定任务的上下游关系和依赖触发关系。

三是调度工具:采用什么调度工具,才能满足上面的需求呢

2.4、数据校验

当任务上线完成后,需要进行数据的一致性比对,从而确保我们的ETL逻辑是正确的,这样才可以放心大胆的使用数据仓库中的数据了。

3、涉及到的技术和知识点

在整个ETL的过程中,涉及到以下几个技术点:

SQL(MySQL、PostgreSQL、Hive、Teradata等)

一门脚本语言(包括但不限于Shell、Perl、Python)

调度工具(Win计划任务、Crontab、Kettle、Airflow)、

ETL加载算法(增、全量、拉链算法)

任务的触发方式(时间触发还是事件触发,任务之间的依赖触发关系等)

你可能感兴趣的:(ETL,ETL)