一、DWD层明细事实表设计
事实表有粒度大小之分,基于数据仓库层次架构,明细事实表一般存在于dwd层,该层事实表设计不进行聚合、汇总动作,仅做数据规范化、数据降维动作,将多个实事表的内容汇总到一张表中,同时数据保持业务粒度,确保数据信息无丢失。
数据降维:
为了提高模型易用性,将常规维度表中的常用属性数据冗余到相应的事实表中,从而在使用的时候避免维表关联的方式,既为数据降维。
事实表的设计主要是根据业务流程,每一个业务动作事件都可以作为一个事实,一个业务流程中会有多个动作,其中的事实表设计主要有以下两种方案:
1、单事件事实表
对于每一个业务动作事件,设计一个事实表,仅记录该事件的事实以及状态,以用户下单打车为例,订单流程包括用户下单、司机接单、乘客支付等过程,这种场景下dwd层明细事实表的设计如下:

由上图可知,该方案更方便跟踪业务流程细节数据,针对特殊的业务分析场景比较方便灵活,数据处理上也更灵活,但是数仓中需要管理太多的事实表,同时跟踪业务流转不够直观。
2、流程事实表
对于一个业务流程主体,设计一个事实表,跟踪整个流程的事实以及状态流转。同样以用户下单打车为例,dwd层明细事实表的设计如下:

该方案能够更直观的跟踪业务流转和当前状态,可满足大多数的数据分析场景,由于和业务侧的数据模型设计思路一致,也是目前最常用的事实表设计,但是细节数据跟踪不到位,特殊场景的分析不够灵活。
3、两种方案的选择
在开发工作中这两种方案可以同时并存,一般单事件事实表应用略多,应用场景较为灵活,也可以结合两种方案进行设计,在流程表的基础上进行适当拆分
4、事实表的存储
(1)增量存储
每周期仅处理增量部分的数据,针对状态无变化的数据比较合适
(2)全量快照
状态有变化,但每天保存当前的快照数据,对于数据量在可控范围内的情况可以采用。如果存储空间和成本可接受,完整存储,确保能够追溯到历史每天数据状态,如果存储空间有限,考虑移动历史快照数据到冷盘,需要使用的时候可恢复,如果历史状态数据无太大价值,可以考虑部分删除,比如仅保留每月最后一天的快照数据
(3)拉链表
针对数据量大,但缓慢变化,需要跟踪历史状态,和缓慢渐变维类似,拉链表适用于每天变化的数据量较小的场景,否则如果每天的变化数据量大于新增量,可优先选择快照
5、制作拉链表

(1

最低0.47元/天 解锁文章
1029

被折叠的 条评论
为什么被折叠?



