数仓分层的意义是什么?
- 作为一名数据的规划者,我们肯定希望自己的数据能够有秩序地流转,数据的整个生命周期能够清晰明确被设计者和使用者感知到。直观来讲就是如图这般层次清晰、依赖关系直观。
但是,大多数情况下,我们完成的数据体系却是依赖复杂、层级混乱的。如下的图,在不知不觉的情况下,我们可能会做出一套表依赖结构混乱,甚至出现循环依赖的数据体系。
因此,我们需要一套行之有效的数据组织和管理方法来让我们的数据体系更有序,这就是谈到的数据分层。数据分层并不能解决所有的数据问题,但是,数据分层却可以给我们带来如下的好处:
- 清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解。
- 复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题。
- 便于维护:当数据出现问题之后,可以不用修复所有的数据,只需要从有问题的步骤开始修复。
- 减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少重复开发的工作量。
- 高性能:数据仓库的构建将大大缩短获取信息的时间,数据仓库作为数据的集合,所有的信息都可以从数据仓库直接获取,尤其对于海量数据的关联查询和复杂查询,所以数据仓库分层有利于实现复杂的统计需求,提高数据统计的效率。
分层本质上是人为划分操作, 可以将某几个库或者某几个表划分在各个层次中, 分层主要的目的: 明确各个层次作用 (任务分工) 利用后续维护 工作与分工
常见的数据分层
ODS层: 源数据层
- 作用: 对接数据源, 用于将数据源中数据采集到ODS层, 会和数据源保持相同粒度(将数据源中数据完整拷贝到ODS层)
- 注意: 在生产中, 有可能会出现在ODS层之前, 会对数据进行预处理操作
- 比如, 加载的数据是来自于文本或者CSV格式数据…
DW层: 数据仓库层(也叫作集团数据中心)
- 作用: 对数据进行统计分析操作, 构建统一宽表统计结果数据, 数据来源于ODS层
- 注意: 此层主要会根据分析主题, 形成主题统计宽表, 服务DA层
DA(app)层: 数据应用层
- 作用: 存储分析的结果表, 会对DW层统计宽表, 根据需求要求, 从宽表中获取想要的数据, 将这些数据灌入到DA层
更加细分的数仓分层方案
1 ODS数据源
此层数据无任何更改,直接沿用外围系统数据结构和数据,不对外开放;为临时存储层,是接口数据的临时存储区域,为后一步的数据处理做准备。
2 DW数据仓库
2.1 DWD明细层:
明细层DWD(Data Warehouse Detail):存储明细数据,此数据是最细粒度的事实数据。该层一般保持和ODS层一样的数据粒度,并且提供一定的数据质量保证。(做数据清洗 转化 处理工作) 拉链表也是从这里做
2.2 DWB基础数据层:
数据降维后生(维度退化)成的明细宽表,作为中间数据使用。一般只保留一段周期内的有效数据。(一般是一年) 从维度表抽取字段结合事实表
2.3 DWS服务数据层:
按照主题划分的日统计宽表,基于DWB上的基础数据,整合汇总成分析某一个主题域的服务数据。(提前聚合 形成统计宽表 Example:统计天 月 年 销售总额 可以在dws层面将销售总额统计出来 然后基于每天数据进行汇总 )
3 DM数据集市:
数据集市层,主要职责是建设宽表模型、汇总表模型,比如用户主题宽表、销售主题宽表等。主要作用是支撑数据分析查询以及支持应用所需数据。
4 RPT报表应用
同样也叫作ADS层、APP层。 根据报表、专题分析的需求而计算生成的个性化数据。(老板想看什么主题的数据 就给他展示出什么主题的数据)
|