文章目录
- 为什么要设计数据分层
- 数仓分层的意义
- 通用的数仓分层设计
- 总结
为什么要设计数据分层
大多数情况下,我们完成的数据体系依赖复杂、层级混乱,在不知不觉中,容易出现循环依赖体系。因此,我们需要设计一套有效的组织方式和管理办法使得对数据有一个更加清晰的掌控。
数仓分层的意义
- 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够极大减少的重复计算
- 保障数据质量:通过数据分层,提供统一的数据出口,统一对外输出的数据口径,减少数据计算错误的可能性。
- 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题
- 屏蔽原始数据的异常:屏蔽业务的影响,不必改一次业务就需要重新接入数据
- 提高使用效率:当业务发生变化时,可以更加方便的进行扩展,提高数据稳定性和连续性。
通用的数仓分层设计
数据仓库一般分为三层,自上而下分别为数据贴源层(ODS,Operation Data Store)、公共数据层(CDM,Common Data Model)和数据应用层(ADS,Application Data Service)。
- 数据引入层ODS(Operation Data Store)即原始数据层,存放未经过处理的原始数据,结构上与数据源系统保持一致,是数据的准备区。
- 公共数据层 CDM(Common Data Model,又称通用数据模型层), 包括DIM维度表、DWD和DWS,由ODS层数据加工而成。主要完成数据加工与整合,建立一致性的维度,构建可复用的面向分析和统计的明细事实表,以及汇总公共粒度的指标。
- 明细数据层(DWD),对数据进行清洗、代码统一、字段统一、格式统一、简单聚合等工作。DWD 层存在的意义是做数据的标准化,为后续的处理提供干净、统一、标准的数据。
- 汇总数据层(DWS),以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。
- 公共维度层(DIM),基于维度建模理念思想,建立整个企业的一致性维度。降低数据计算口径和算法不统一风险。
- 数据应用层ADS(Application Data Service),存放数据产品个性化的统计指标数据,根据CDM层和ODS层的数据加工生成。
总结
数据仓库分层没有绝对的规范,适合的就是最好的,数据仓库分层的核心逻辑是解藕。在有限时间、资源等条件下满足业务需求,同时又要兼顾业务的快速变化。另外,分层架构师需要不断优化调整的,不能超前太多,也不能脱离业务,需要兼顾业务的复杂变化,以及开发的复杂度和可维护性,在两者之间做一个平衡和取舍,选择合适的分层架构。