kimball维度建模(2)-事实表中的事实

1.定义:

事实涉及来自业务过程事件的度量,基本都是数值型。事实表中的每个事实行都是申明的粒度下描述的事件度量

2.事实分类:

  1)可加:可按事实表任意维度汇总

  2)半可加:可按事实表部分维度汇总。如库存、账户余额不能按时间维度汇总,但可按机构维度汇总

  3)不可加:例如比率

3.如何判定一个值该不该作为事实

  1)从定义上看:事实主要是对业务的一个度量,常常可以用来做计算、汇总等

  2)从用途上看:如果一个数字值难以确认是维度还是事实,看该数值主要用于计算目的-事实,还是用于确定分组或做过滤-维度;

  3)非可加事实是否应该存在事实表中:其一,例如单价,不能做汇总,求平均时也比较麻烦不能简单得avg,还需要考虑每条记录的销售量。如果业务有需要,可以存;其二,比率类型例如利润率,不建议存在事实表中,因为利润率要计算的是汇总之后的比率,而不是比率的汇总。推荐的做法是将分子分母分别存在事实表中

  4)注意既可以当事实又可以当维度的一些值:其一,比如“业务服务性能级别”,如果用1-5表示级别,既可以作为筛选条件,又可以作为性能的度量;其二,比如基于客户的一些聚集事实-“上年度在产品花费总金额”,可以用来作为维度属性筛选出花费较高范围的客户,这种如果业务常用,并且花费高的口径不常更新,可以做固定维度字段-上年花费区间“花费0-1000、1000-5000、5000-10000、花费10000以上”之类。

4.事实表

1)常用的事实表有:明细事务事实表、周期快照事实表、累积快照事实表;还有无事实事实表、聚集事实表、合并事实表

2)事实表一般含有两个或两个以上与维度表主键关联的外键

3)事实表通常有包含外键集合的主键,事实表主键常称组合键,具有组合键的表称为事实表。(事实表表示多对多的关系,以交易明细为例:交易可以在多维场景发生,某场景也能发生多笔交易)

Tips:

1)维度表都有单一主键,但处理可变层次维度的桥接表可能存在复合键。无事实事实表可以用来描述客户与客户代理的分配关系、多维场景下客户参加活动的时间等,与桥接表看起来很类似;

那无事实事实表与桥接表的差别在哪呢?桥接表指的是一个维度(如部门组织架构)有多值、有不同层次;而无事实事实表指的是多个维度(客户、客户代理)之间的关联关系。

2)支架表也属于维度,支架表是维度表中还有维度键,该维度键对应的称为支架表,类似与雪花模型,应尽量少用

3)事实表可以存在空值度量,因为聚集函数等无影响;但维度外键不能空,这回导致违反参照完整性

4)维度表推荐用描述性字符如unknown等代替空值,这是考虑到不同数系统处理分组和约束对空值的处理方法不一致,用这种方式可以规避掉(这里可能还要注意类似空串""关联,NULL空不关联的事项)

 

posted @ 2020-09-25 21:22  foolangirl  阅读(634)  评论(0编辑  收藏  举报