事实表特性
1)事实表描述了业务过程,包含引用的维度和业务的度量,与维度表相比数据量大得多,增长速度快得多
2)描述业务过程的细节程度称为粒度
3)可分为可加性,半可加性、不可加性三性质的事实表:
① 可加性:可以按照事实表关联的任意维度进行汇总
② 半可加性:可以按照事实表关联的部分维度进行汇总,如库存可以按照地点,商品汇总,但按时间汇总则没有意义
③ 不可加性:不具备可加性,如比率型事实。对于不可分事实可分解为可加的组件实现聚集
4)把维度属性保存在事实表中称为“维度退化”
5)事实表的三种类型:
① 事务事实表:用来描述业务过程,保存空间、时间上某点的度量时间
② 周期快照事实表:以具有规律性的时间间隔记录事实
③ 积累快照事实表:记录开始时间和结束时间的关键事件,在生命周期中随业务过程的变化而变化
事实表设计原则
1)尽可能包含所有业务相关事实,即使会冗余。因为事实表通常为数值型,带来的开销在可以忍受的范围内,却可以极大的方便使用。注意只选择与当前业务有关的事实,下单过程中不应该有支付信息
2)分解不可加性事实为可加组件,如分解优惠比率为优惠金额和原价
3)设计事实表之前先设计好粒度,粒度越细可支持的需求就越多。一个事实表中事实不能有多种粒度
4)需要对null进行处理,因为sql过滤条件对null不生效
5)适当的使用退化维度,减少下游关联操作次数
事实表设计步骤
确定业务过程 --> 确定粒度 --> 确定维度 --> 确定事实