这些文本形式的上下文描述了事实的“ 5个W ”( When 、 Where 、 What 、 Who 、 Why )信息,通常可被直观地分割为独立的逻辑块,每一个独立的逻辑块即为一个维度,比如一个订单可以非常直观地分为商品 、买家、卖家等多个维度。
在维度建模和设计过程中,可以根据需求描述或者基于现有报表,很容易地将信息和分析需求分类到事实和度量中。
比如业务人员需求为“按照一级类目,统计本店铺上月的销售额情况”,“按照一级类自”这个描述,很清楚地说明需求方希望对一级类目的销售额进行统计分析,这里的一级类目即为一个维度 。类似的是,“上月”为另一个维度,而销售额明显是事实。
事实表
事实表是维度模型中的基本表,或者说核心表
事实上,业务过程的所有度量在维度建模中都是存储在事实表中的,除此之外,事实表还存储了引用的维度。
事实表通常和一个 企业的业务过程 紧密相关,由于一个企业的业务过程数据构成了其所有数据的绝大部分,因此事实表也通常占用了数据仓库存储的绝大部分。
比如对于某个超市来说,其 销售的明细数据 通常占其拥有数据的绝大部分且每天还在不断地累计和增长,而商品、门店、员工、设备等其他数据相对来说固定且变化不大。
事实表的一行对应一个度量事件
事实上,每行对应的度量事件可粗可细,比如对某个超市来说,在设计其维度模型时,表示顾客购买事件的事实表的一行即可以记录一张顾客的小票,也可以记录顾客小票的一个子项。
那么我们究竟应该到何种级别呢?
维度建模认为事实表应该包含最底层的、最原子性的细节,因为这样会带来最大的灵活性 维度建模中,细节的级别称为事实表的粒度,比如上文顾客购买行为事实表的粒度就应该是小票子项,而非小票。
事实表中最常用的度量一般是数值型和可加类型的
比如小票子项的销售数量、销售金额等,可加性对于数据分析来说至关重要,因为数据应用一般不仅检索事实表的单行数据,而往往一次性检索数百、数千乃至百万行的事实,