数据抽取、转换和加载,装载(ETL)
(1)数据抽取:抽取是源数据进入数仓的第一步,每个业务系统不同,因此需建立不同的抽取。并进行下一步清洗。抽取目的,提供批处理服务(抽取流程启动,监控,作业调度抽取)、更标准化(业务数据源和数仓中数据类型统一)、过滤功能(保证数据质量)、数据适配(JDBC,ODBC,XML)等。
如图:
(2)数据清洗:保证数据符合数仓要求,清洗分两种:不同业务清洗规则不同,则可使用各自的清洗流程;不同业务清洗规则相同,则可以使用相同的清洗规则。编写清洗规则时,也可使用通用函数,减少重复工作。
数据修正:用固定算法或检查程序验证数据准确性
标准化:数仓数据统一
匹配合并:数据验证,重复数据验证,合并
(3)数据转换:对数据进行计算,根据业务需求的特点;对数据放大,添加额外信息;
(4)数据加载:将数据加载到目标表中,目标表可以是事实表,也可以是维度表。用代理键代替原来的主键
ETL的流程架构包括数据源,ODS缓冲层,ODS统一视图层,数据仓库(DW),数据集市(DM)
1)源数据抽取到ODS层
ODS按功能划分ODS缓冲层和ODS统一视图层。ODS缓冲层是数据临时存储的位置,与源数据保持一致。ODS统一视图层提供数据视图,数据源于缓冲层。源数据抽取到ODS层分为全量和增量,顾名思义。全量抽不过滤,增量抽粗略过滤。
2)ODS缓冲层抽取到统一信息视图层
除第一次全量抽取后继增量抽取,按照时间戳或者版本号。
3)ODS统一信息视图层抽取到DW
数仓数据涵盖很多,颗粒度低,细节高,定期刷新给数据集市提供更新的数据。
4)DW抽取到数据集市
特定的集合,是报表的数据来源。数仓的数据整合或计算然后被抽取到数据集市。
上述整个流程需要ETL,需要建立映射,以及ETL调度。
数据的加载:可以已时间戳作为加载条件;也可以以源表日志的信息作为对目标表作为数据加载的条件;也可以通过全表的方式进行加载,通过全表对目标表的每条数据进行比较,目标表不存在主键则插入,主键存在,比较其他字段,不同则进行更新。全表对比不需要对源数据进行修改,安全性高,但流程复杂,抽取效率低。