大数据--数据仓库--事实表设计

本文详细介绍了大数据中事实表的设计,包括设计原则如包含所有相关事实、选择相关事实、分解不可加性事实、声明粒度、保持事实单位一致等。并阐述了事务事实表、周期快照事实表和累积快照事实表的分类及其应用场景,强调了正确选择事实表类型和粒度的重要性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

第三章:事实表设计

3.1 事实表设计原则

3.2 事实表设计方法

3.3 事实表分类

3.3.1 事务事实表

3.3.2 周期快照事实表

3.3.3 累积快照事实表

3.3.4 三种事实表比较


第三章:事实表设计

3.1 事实表设计原则

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

        事实表设计的目的是为了度量业务过程,所以应该分析那些事实与业务过程有关。在事实表中应该尽量包含所有与业务过程相关的事实,即使存在冗余。

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

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

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

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

  • 可加事实:对任意维度都可以分组汇总,例如订单量

  • 半可加事实:对部分维度可以分组汇总,例如余额

  • 不可加事实:对任何维度都不可分组汇总,例如比率,模型中可以保留分子,分母从而转成可加事实。

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

        粒度用于确定事实表中一行所表示业务的细节层次,决定了维度模型的扩展性,在选择维度和事实前必须先声明粒度,且每个维度和事实必须与所定义的粒度保持一致。在设计事实表的过程中,粒度定义越细越好,建议从最低级别的原子粒度开始,因为原子粒度提供了最大限度的灵活性,可以支持无法预期的各种细节层次的用户需求。

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

        事实表中所有事实需要与表定义的粒度保持一致

  • 事务型事实表(原子事实表):通常是明细表,拥有最丰富的的维度信息和最细粒度的事实,一般具有退化维度。

  • 周期型事实表:通常是汇总表,关注某个固定周期内的聚合事实,一般由原子事实加工产出,维度上可以有所缩减

  • 累积型事实表:关注业务的整个过程(物流),单条数据会随着时间的变化而更新,一般需要重跑或者全量处理数据。例如哈罗单车用户骑行过程,会关注几个关键里程,开锁,关锁,支付,评价

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

        对于同一个事实表中事实的单位,应该保持一致。比如原订单金额,订单优惠金额,订单运费金额这三个事实,应该采用一致的计量单位。

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

        对事实的null值要进行处理,因为在数据库中null值对常用数字型字段的sql过滤条件都不生效,比如大于,小于,等于都建议使用零值进行填充,或者使用-999进行兜底。

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

        在大数据领域的事实表设计中,则大量采用退化维度的方式,在事实表中存储各类型的常用维度信息。这样设计的目的是为了减少下游用户使用时关联多个表的操作,直接通过退化维度实现对事实表的过滤查询,控制聚合层次等。通过冗余存储的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值