如何使数据在数据仓库中真正发挥最大的作用呢?这时我们可以对数仓进行分层。
数仓分层意义
- 把复杂问题简单化。可以将一个复杂任务分解多个步骤完成,每层只处理单一步骤。
- 减少重复开发。规范数据分层,通过使用中间层数据,可以大大减少重复计算量,增加计算结果复用性。
- 隔离原始数据。使真实数据与最终统计数据解耦。
- 统一数据口径。通过数据分层,提供统一的数据出口,统一输出口径。
- 数据一致性。通过公共下沉数据,下又使用的时候不再重新计算,可保证一定是数据一致性问题。
- 数据权限。通过分层,实现对不同分层数据的权限管理。
分层的核心思想就是解耦,再解耦,把复杂的问题简单化,这直接影响了数据架构到底分几层。
数据分层架构介绍
如何分层取决于设计者对数据仓库的整体规划,大致思路相同。以下介绍一种分5层的数仓分层架构。
ODS层
原始数据层,用于存放原始数据,直接加载原始日志、数据,数据保持原貌不做处理。
主要起到备份作用,采用压缩格式,减少磁盘存储空间,创建分区表,防止后续进行全表扫描。
DWD层
明细数据层,对ODS层数据进行清洗、维度退化、脱敏等。
以维度模型进行构建,一般采用星型模型,而呈现的状态一般为星座模型。
维度建模方法步骤一般为:
选择业务过程:选择具体业务
声明粒度:保存数据的细化程度或综合程度级别
确定维度:用于描述业务事实
确定事实:以业务过程为建模驱动,构建最细粒度的明细数据层事实表。
DWS层
汇总数据层,以DWD层的数据为基础,按天(实际需求)进行轻度汇总。服务于DWT层的主题宽表。
单维度的轻度汇总表维度单一,统计指标丰富,迭代更灵活。
多维度的轻度汇总表,维度丰富,统计指标有限,迭代相对复杂。
DWT层
主题数据层,以DWS层的数据为基础,按主题进行汇总,构建每个主题的全量数据表。
以分析的主题对象为建模驱动,基于上层的应用和产品指标需求,构建主题对象的全量宽表。
ADS层
数据应用层,面向实际数据需求,为各种统计报表提供数据。
数仓分层举例
通用数仓分层架构
SaaS收银运营数仓分层架构
美团数仓分层架构
附参考资料: