数仓分层通用架构与实例展示

一、为什么需要数仓分层?

(1)问题现象

使用数仓的最终目的是输出可分析、可进行决策的根据。假设一个项目几百张表都放在数仓中,如果不分层,随着业务的发展,表会愈发杂乱,数据的开发成本会越来越高。对于不同的业务,可能有重叠的计算部分和算子,分别独立开发会造成重复造轮子的现象,导致资源浪费。

(2)目的

简化数据清洗过程,拆解整体工作,细分为多个易于处理的部分,进而实现解耦,易于追溯数据错误和保证各部分的正确性。

(3)核心思想

解耦,复杂问题简单化,分而治之

(4)优点

  • 清晰数据结构:每一个数据层都有它的作用域和职责,在使用表的时候能够方便定位和理解
  • 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
  • 统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
  • 复杂问题简单化:将一个复杂任务分解为多个步骤来完成,每层解决待定任务


二、一种通用的数仓分层架构

层级 说明 描述
ODS 原始数据层 存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区,数据原则上全量保留。
DWD 明细数据层 以业务过程作为建模驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。数据粒度一般保持和ODS层一样的,并且提供一定的数据质量保证。同时为了提高数据明细层的易用性,该层会采用一些维度退化首发,将维度退化至事实表中,减少事实表和维度表的关联。同时在此层会采用明细宽表,复用关联计算,减少数据扫描。
DWS 公共汇总层 以分析的主题对象作为建模驱动,基于上层的应用和产品的指标需求,构建公共粒度的汇总指标事实表,以宽表化手段物理化模型。构建命名规范、口径一致的统计指标,为上层提供公共指标,建立汇总宽表、明细事实表。
DIM 公共维度层 基于维度建模理念思想,建立整个企业的一致性维度降低数据计算口径和算法不统一风险。
ADS 数据应用层 数据应用层,也叫DM(数据集市)或APP层等,面向实际的数据需求,可以直接给业务人员使用,以DWD或者DWS层的数据为基础,组成各种统计报表。除此之外还有一些直接的表现形式,例如主题大宽度表集市,以及横表转纵表等。
CDM 数据公共层 数据公共层CDM (Common Data Model) 或者 企业级数据仓库EDW (Enterprise Data Warehouse) 主要用于存放明细事实数据、维表数据及公共指标汇总数据,其中明细事实数据、维表数据一般根据ODS层数据加工生成,公共指标汇总数据一般根据维表数据和明细事实数据加工生成。本层采用维度模型作为建模方法的理论基础,更多的是通过采用一些维度退化手段,将维度退化至事实表中,减少维表和事实表的关联,提高数据易用。


三、数仓分层实例

1.SaaS收银运营数仓分层架构


2.美团数仓分层架构


  • IDL数据集成层:整合多数据源的一致性建模,完成数据维度,事实组合。这一层要注重特殊的两个概念,一是宽表,二是聚合表。宽表与 kimball 的 fact table 不一样,我们通常所说的fact table,实际上仅仅是明细表的统称,而宽表,则是把相关的事实表,都整合到一起,这样的好处,一是加快速度,二是一次查询更加全面;
  • CDL数据组件层:用来完成聚合汇总,进一步按照粒度划分,完成年月日级的聚合。至此,一个中央数据仓库就完成了;
  • MDL数据集市层:按照业务单元,做数据集市。比如营运,销售。这样提供给数据应用层,就有了完整的、可复用的数据源;
  • ADL应用层:主要针对业务场景选型,数据可视化。


四、如何更好地进行数仓分层

数据仓库分层没有绝对的规范,适合的就是最好的,数据仓库分层的核心逻辑是解耦,在有限时间、资源等条件下满足业务需求,同时又要兼顾业务的快速变化。这就需要兼顾业务的复杂变化,以及开发的复杂度和可维护性,在两者之间做一个平衡和取舍,选择合适的分层架构,不能超前太多,也不能脱离业务。

一个好的数仓模型分层,应该具备的要素是数据模型可复用,完善且规范的。

  • 从完善度上来讲,主要衡量DWD层和汇总层两块的完善度,DWD层完善度,主要是希望DWD等尽可能被汇总层引用,除了DWD层外,其它层尽可能少引用ODS层。
  • 从复用度上来讲,我们希望80%需求由20%的表来支持。直接点进,就是大部分(80%以上)的需求,都用DWS的表来支持。
  • 从规范度上来讲,主要从表名、字段名来看,一个规范的表名应该包括层级、主题域、分区规则,抽取类型等信息,字段规范应该是和词根一致,同字段同名等。
评论
登录后可评论
发布者
icon
扬仔无敌
文章
31
问答
119
关注者
10
banner
关注星环科技
获取最新活动资讯

加入TDH社区版技术交流群

获取更多技术支持 ->

扫描二维码,立即加入