数仓分层
一.分层的作用
- 数仓分层的目的是:逐层解耦,减少重复计算,降低烟囱式开发。越到底层,越接近业务发生的记录,越到上层,越接近业务目标。具体如下:
- ①清晰数据结构:每一个数据分层都有它的作用域和职责,在使用表的时候能更方便地定位和理解,实现业务数据解耦。
- ②减少重复开发:规范数据分层,开发一些通用的中间层数据,能够减少极大的重复计算
- ③统一数据口径:通过数据分层,提供统一的数据出口,统一对外输出的数据口径
- ④复杂问题简单化:将一个复杂的任务分解成多个步骤来完成,每一层解决特定的问题
二、ODS (opreational data store)
- 存放未经过处理的原始数据至数据仓库系统,结构上与源系统保持一致,是数据仓库的数据准备区。
- 作用
- ①保持数据原貌不做任何修改,起到备份数据的作用
- ②数据采用压缩,减少磁盘存储空间(如:原始数据100G,可以压缩到10G左右)
- ③创建分区表,防止后续的全表扫描
三、DWD(data warehouse detail)
1.概览
- DWD层是以业务过程为驱动,基于每个具体的业务过程特点,构建最细粒度的明细层事实表。可以结合企业的数据使用特点,将明细事实表的某些重要维度属性字段做适当冗余,即宽表化处理。同时,为了提高数据明细层的易用性,该层会采用一些维度退化手法,将维度退化至事实表中,减少事实表和维表的关联,在该层也会做一部分的数据聚合,将相同主题的数据汇集到一张表中,提高数据的可用性。
2.步骤
-
DWD层需构建维度模型,一般采用星型模型,呈现的状态一般为星座模型。 维度建模一般按照以下四个步骤: 选择业务过程→声明粒度→确认维度→确认事实
-
① 选择业务过程
在业务系统中,挑选我们感兴趣的业务线,比如下单业务,支付业务,退款业务,物流业务,一条业务线对应一张事实表。 如果是中小公司,尽量把所有业务过程都选择。 如果是大公司(1000多张表),选择和需求相关的业务线。
-
② 声明粒度
数据粒度指数据仓库的数据中保存数据的细化程度或综合程度的级别。 声明粒度意味着精确定义事实表中的一行数据表示什么,应该尽可能选择最小粒度ÿ