X-Blog

数仓分层及ETL实施

Peijun 于 2021-12-16 发布

数据仓库是一个合并了各种来源的数据,以便出于业务目的对数据进行统一分析的数据库。ETL 通常用于将数据移至数据仓库。

数仓分层架构

数据仓库标准上可以分为四层。但是这种划分和命名不是唯一的,一般数仓都是四层,但是不同公司可能叫法不同。但是核心的理念都是从四层数据模型而来。

为什么要分层

ETL(Extract-Transform-Load)实施

ETL,Extract-Transform-Load的缩写,是将业务系统的数据经过抽取、清洗转换之后加载到数据仓库的过程。ETL是数据集成的第一步,也是构建数据仓库最重要的步骤,目的是将企业中的分散、零乱、标准不统一的数据整合到一起,为企业的决策提供分析依据。ETL一词较常用在数据仓库,但其对象并不限于数据仓库。

1.数据抽取

数据抽取指的是从不同的网络、不同的操作平台、不同的数据库和数据格式、不同的应用中抽取数据的过程。目标源可能包括ERP、CRM和其他企业系统,以及来自第三方源的数据。

不同的系统倾向于使用不同的数据格式,在这个过程中,首先需要结合业务需求确定抽取的字段,形成一张公共需求表头,并且数据库字段也应与这些需求字段形成一一映射关系。这样通过数据抽取所得到的数据都具有统一、规整的字段内容,为后续的数据转换和加载提供基础,具体步骤如下:

①确定数据源,需要确定从哪些源系统进行数据抽取

②定义数据接口,对每个源文件及系统的每个字段进行详细说明

③确定数据抽取的方法:是主动抽取还是由源系统推送?是增量抽取还是全量抽取?是按照每日抽取还是按照每月抽取?

2.数据转换

数据转换实际上还包含了数据清洗的工作,需要根据业务规则对异常数据进行清洗,主要将不完整数据、错误数据、重复数据进行处理,保证后续分析结果的准确性。

数据转换就是处理抽取上来的数据中存在的不一致的过程。数据转换一般包括两类:第一类:数据名称及格式的统一,即数据粒度转换、商务规则计算以及统一的命名、数据格式、计量单位等;第二类:数据仓库中存在源数据库中可能不存在的数据,因此需要进行字段的组合、分割或计算。主要涉及以下几个方面:

①空值处理:可捕获字段空值,进行加载或替换为其他含义数据,或数据分流问题库

②数据标准:统一元数据、统一标准字段、统一字段类型定义

③数据拆分:依据业务需求做数据拆分,如身份证号,拆分区划、出生日期、性别等

④数据验证:时间规则、业务规则、自定义规则

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

⑥数据关联:关联其他数据或数学,保障数据完整性

实体解析

简说:来自不同的数据源的数据,即便他们表示的是同样的对象(实体),但是具体的数据有可能是不一样的。

实体解析(Entity resolution)后的记录合并(Merge)

找出了表示同一对象的记录以后,如何合并这些数据,仍然是一个问题。如果不同的记录,各个字段只有拼写错误或者采用了不同的同义词等情况,合并记录不是困难的事情。但是如果数据本身存在冲突,要找到哪个值是正确的,不是件容易的事。在这种情况下,我们可以把所有的结果都报告出来。

3.数据加载

数据加载的主要任务是将经过清洗后的干净的数据集按照物理数据模型定义的表结构装入目标数据仓库的数据表中,如果是全量方式则采用LOAD方式,如果是增量则根据业务规则MERGE进数据库,并允许人工干预,以及提供强大的错误报告、系统日志、数据备份与恢复功能。整个操作过程往往要跨网络、跨操作平台。

在实际的工作中,数据加载需要结合使用的数据库系统(Oracle、Mysql、Spark、Impala等),确定最优的数据加载方案,节约CPU、硬盘IO和网络传输资源。

参考资料 https://cloud.google.com/learn/what-is-etl?hl=zh-cn https://blog.csdn.net/Mogeko1/article/details/129427039 https://zhuanlan.zhihu.com/p/550273838