2.数据仓库之事实表设计规则

1.事实表特性

事实表作为数据仓库维度建模的核心,紧紧围绕着业务过程来设计,通过获取描述业务过程度量来表达业务过程。包含了引用的维度和业务过程相关的度量。

事实表中一条记录所表达的业务细节程度被称之为粒度。通常粒度可以通过两种方式来表达:一种是维度属性组合所表达的细节程度;一种是所表示的业务具体含义。

作为度量业务过程的事实,一般为整型或浮点型的十进制的数值,有可加性,半可加性和不可加性三种类型。可加性的事实是指可以按照与事实表关联任意的维度进行汇总。半可加性事实只能按照特定的维度汇总,不能对所有的维度汇总。例如库存可以按照地点和商品进行汇总,而按照时间维度把一年中每个月的库存累积加起来毫无意义。还有一个度量完全不具备可加性,比如比率型事实(打折)。对于不可加性事实可以分解为可加的组件来实现聚集。

维度属性也可以存储到事实表中,这种存储到事实表中的维度列被称为 “退化维度”。于其他存储在维表中的维度一样,退化维度也可以用来进行事实表的过滤查询,实现聚合操作等。


2.事实表设计原则
原则1:尽可能的包含所有与业务过程相关的事实

事实表设计的目的是为了度量业务过程,所以分析哪些事实与业务过程有关是设计中非常重要的关注点。在事实表中应该尽量包含所有与业务相关的事实,即使存在冗余,但是因为事实通常为数值类型,带来的存储开销也不会很大。

原则2:只选择与业务过程相关的事实

在选择事实时,应该注意只选择与业务相关的事实。比如在订单的下单这个业务事实表设计中。不应该存在支付金额这个表示支付过程的事实。

原则3:分解不可加性事实为可加的组件

对于不具备可加性的事实,需要分解为可加的组件,比如订单的优惠率,应该分解为订单的原价与订单优惠金额两个事实存储在事实表中

原则4:在选择维度和事实之前必须声明粒度

粒度的声明是在事实表设计中不可忽略的重要一步,粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性,在选择维度和事实之前必须先声明粒度,且每个维度和事实必须与所定义的粒度保持一致。

原则5:在同一个事实表中不能有多种不同粒度的事实

事实表中的所有事实需要与表定义的粒度保持一致,在同一个事实表中不能有多种不同粒度的事实。

原则6:事实的单位要保持一致

对于同一个事实表中事实的单位应该保持一致。比如订单的金额、订单优化金额、订单运费金额这三个事实,应该采用一致的计量单位,统一为元或者分,方便实用。

原则7:对事实的null值要处理

对于事实表中事实度量为null 值的处理,因为在数据库中null 值对常用数字型字段的sql过滤条件都不生效,比如大于,小于,等于…,建议用零值填充。

原则8:使用退化维度提高事实表的易用性

这样设计的主要目的是为了减少下游用户使用时关联多个表进行操作。直接通过退化维度实现事实表的操作。通过增加存储的冗余,提高计算的速度。空间置换时间的方式。

本文摘自书:《大数据之路:阿里巴巴大数据实践》
  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值