在建模复杂的操作型源数据时,通常会遭遇大量五花八门的指标和标志。它们包含小范围的离散值,处理这些较低粒度的标志和指标可以采用以下几种方法。
1、忽略这些标志和指标。
2、保持事实表行中的标志和指标不变。
3、将每个标志和指标放入其自己的维度中:如果外键的数量处于合理的范围中)不超过20个),则在事实表中增加不同的外键是可以接受的,但是,若外键列表已经很长的,应该避免将更多的外键加入到事实表中。
4、将标志和指标存储到订单表头维度中。
处理这些标志和指标的适当替换方法是,仔细研究它们,并将它们包装为一个或多个杂项维度。杂项维度就像厨房中的垃圾抽屉,厨房的垃圾抽屉用于放置各种各样的家用物品。例如,橡皮圈、回形针电池等,尽管如果采用专门的垃圾抽屉会非常容易定位橡皮圈,但难以存在足够的存储能力,不能保证为单一目的的分配存储空间。杂项抽屉使您能够满意的存放东西,还能维持其他主要和经常使用的盘子和碟子的存储空间。
杂项维度是对低粒度的标志和指标的分组,通过建立杂项维度,将标志和指标从事实表中移出,并将它们放入到有用的多维框架中。
如果具有高度非关联的属性,包含更多的数量值,则将它们合并为单一的杂项维度为主没有多的意义。
在建模表头/明细数据维度时需要避免两个常见的设计错误。
1、将事务表头当成维度。
采用这样的设计方法对每个新订单来说,将在维度表中增加一行。在事实表中平均增加5行,如果某个订单通常包含五个明细项,则纬度大小将是事实表的20%,订单事实的大小与与之关联纬度的大小应该有数量级的差别。即纬度表不应该与事实表以同样的速率增长。
2、在列表事实中没有继承表头纬度。
订单表表头不能被当成是整体维度而是被当成事实表。
不要在单一事实表中混淆类似订单表头或订单明细事实粒度。
在事实表中包含一个附加的及时计数器,设置为可加值0或者1,表示列表内容发货是否及时。同样,可以增加一个延迟度量,表示天数,可以是正的或者负的。表示介于请求日期和实际发货日期之间的时间。
有时用户希望分析整个订单流水线的情况,用户希望更好地理解产品生产速度,或者知道产品在流水线中流动的速度有多快。累积快照事实表可提供此类业务场景。
网友评论