如何使数据在数据仓库中真正发挥最大的作用呢?这时我们可以对数仓进行分层。

数仓分层意义

  1. 把复杂问题简单化。可以将一个复杂任务分解多个步骤完成,每层只处理单一步骤。
  2. 减少重复开发。规范数据分层,通过使用中间层数据,可以大大减少重复计算量,增加计算结果复用性。
  3. 隔离原始数据。使真实数据与最终统计数据解耦。
  4. 统一数据口径。通过数据分层,提供统一的数据出口,统一输出口径。
  5. 数据一致性。通过公共下沉数据,下又使用的时候不再重新计算,可保证一定是数据一致性问题。
  6. 数据权限。通过分层,实现对不同分层数据的权限管理。

分层的核心思想就是解耦,再解耦,把复杂的问题简单化,这直接影响了数据架构到底分几层。

数据分层架构介绍

如何分层取决于设计者对数据仓库的整体规划,大致思路相同。以下介绍一种分5层的数仓分层架构。

ODS层

原始数据层,用于存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。
主要起到备份作用,采用压缩格式,减少磁盘存储空间,创建分区表,防止后续进行全表扫描。

DWD层

明细数据层,对ODS层数据进行清洗、维度退化、脱敏等。
以维度模型进行构建,一般采用星型模型,而呈现的状态一般为星座模型。
维度建模方法步骤一般为:
选择业务过程:选择具体业务
声明粒度:保存数据的细化程度或综合程度级别
确定维度:用于描述业务事实
确定事实:以业务过程为建模驱动,构建最细粒度的明细数据层事实表。

DWS层

汇总数据层,以DWD层的数据为基础,按天(实际需求)进行轻度汇总。服务于DWT层的主题宽表。
单维度的轻度汇总表维度单一,统计指标丰富,迭代更灵活。
多维度的轻度汇总表,维度丰富,统计指标有限,迭代相对复杂。

DWT层

主题数据层,以DWS层的数据为基础,按主题进行汇总,构建每个主题的全量数据表。
以分析的主题对象为建模驱动,基于上层的应用和产品指标需求,构建主题对象的全量宽表。

ADS层

数据应用层,面向实际数据需求,为各种统计报表提供数据。

数仓分层举例

通用数仓分层架构

数仓分层-1 - 图1

SaaS收银运营数仓分层架构

数仓分层-1 - 图2
数仓分层-1 - 图3

美团数仓分层架构

数仓分层-1 - 图4

附参考资料: