数据仓库维度建模之事实表设计


一、DWD层明细事实表设计

事实表有粒度大小之分,基于数据仓库层次架构,明细事实表一般存在于dwd层,该层事实表设计不进行聚合、汇总动作,仅做数据规范化、数据降维动作,将多个实事表的内容汇总到一张表中,同时数据保持业务粒度,确保数据信息无丢失。

数据降维:
为了提高模型易用性,将常规维度表中的常用属性数据冗余到相应的事实表中,从而在使用的时候避免维表关联的方式,既为数据降维。

事实表的设计主要是根据业务流程,每一个业务动作事件都可以作为一个事实,一个业务流程中会有多个动作,其中的事实表设计主要有以下两种方案:

1、单事件事实表
对于每一个业务动作事件,设计一个事实表,仅记录该事件的事实以及状态,以用户下单打车为例,订单流程包括用户下单、司机接单、乘客支付等过程,这种场景下dwd层明细事实表的设计如下:

在这里插入图片描述

由上图可知,该方案更方便跟踪业务流程细节数据,针对特殊的业务分析场景比较方便灵活,数据处理上也更灵活,但是数仓中需要管理太多的事实表,同时跟踪业务流转不够直观。

2、流程事实表
对于一个业务流程主体,设计一个事实表,跟踪整个流程的事实以及状态流转。同样以用户下单打车为例,dwd层明细事实表的设计如下:
在这里插入图片描述

该方案能够更直观的跟踪业务流转和当前状态,可满足大多数的数据分析场景,由于和业务侧的数据模型设计思路一致,也是目前最常用的事实表设计,但是细节数据跟踪不到位,特殊场景的分析不够灵活。

3、两种方案的选择
在开发工作中这两种方案可以同时并存,一般单事件事实表应用略多,应用场景较为灵活,也可以结合两种方案进行设计,在流程表的基础上进行适当拆分

4、事实表的存储
(1)增量存储
每周期仅处理增量部分的数据,针对状态无变化的数据比较合适

(2)全量快照
状态有变化,但每天保存当前的快照数据,对于数据量在可控范围内的情况可以采用。如果存储空间和成本可接受,完整存储,确保能够追溯到历史每天数据状态,如果存储空间有限,考虑移动历史快照数据到冷盘,需要使用的时候可恢复,如果历史状态数据无太大价值,可以考虑部分删除,比如仅保留每月最后一天的快照数据

(3)拉链表
针对数据量大,但缓慢变化,需要跟踪历史状态,和缓慢渐变维类似,拉链表适用于每天变化的数据量较小的场景,否则如果每天的变化数据量大于新增量,可优先选择快照

5、制作拉链表
在这里插入图片描述

(1

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值