文章目录
【大数据之路】数据模型篇 《四》事实表设计
1 事实表基础
1.1事实表特性
事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计。事实表中一条记录所表达的业务细节程度被称为粒度。通常粒度可以通过两种方式来表述: 一种是维度属性组合所表示的细节程度;一种是所表示的具体业务含义。
维度属性也可以存储到事实表中 , 这种存储到事实表中的维度列被称为 “退化维度"。
事实表有三种类型: 事务事实表、周期快照事实表和累积快照事实表。
1.2事实表设计原则
原则1:尽可能包含所有与业务过程相关的事实
原则2:只选择与业务过程相关的事实
原则3:分解不可加性事实为可加的组件
原则4:在选择维度和事实之前必须先声明粒度
原则5:在同一个事实表中不能有多种不同粒度的事实
原则6:事实的单位要保持一致
原则7:对事实的null值要处理
原则8:使用退化维度提高事实表的易用性
1.3事实表设计方法
选择业务过程、声明粒度、确定维度、确定事实、冗余维度。
2 事务事实表
2.1设计过程
以淘宝订单流转的业务过程举例有四个:创建订单、买家付款、卖家发货、买家确认收货。
在选择了业务过程以后,相应的事实表类型也随之确定了。比如选择买家付款这个业务过程,那么事实表应为只包含买家付款这一个业务过程的单事务事实表;如果选择的是所有四个业务过程,并且需要分析各个业务过程之间的时间间隔,那么所建立的事实表应为包含了所有四个业务过程的累积快照事实表。
经过声明粒度、确定维度、确定事实后,出于效率和资源考虑,将常用维度退化到事实表中,如下图所示:
为了提高对事实表进行过滤查询