数据仓库维度建模——事实表设计

一、 事实表相关概念
1、 粒度
1.1 什么是粒度
事实表中一条记录说表达的业务细节程度被称为粒度。
1.2 两种常用表现形式
(1)使用维度属性组合来表示的细节程度。
(2)表示的具体的业务含义。

  1. 事实
    2.1 什么是事实
    业务过程中具体的度量值称为事实,比如发货数量、支付金额等。
    2.2 三种类型的事实(根据是否可加分类)
    (1)可加事实:可以按照与事实表关联的任意维度进行汇总。
    (2)半可加事实:只能按照特定的维度进行汇总,不能对所有维度汇总。一般对于不可加性事实需要分解为可加的事实放到事实表(事务事实表)中,比如,折扣率,需要转化为具体的折扣金额放到事实表中。
    (3)不可加事实:对任务维度都不可加。一般是某些状态值。

二、事实表设计原则
1、尽可能包含所有与业务过程相关的事实。
2、只选择与业务过程相关的事实。
3、分解不可加性事实为可加的组件。
4、在选择维度和事实之前必须先声明粒度。根据经验建议从最低级别的原子粒度开始,这样可以提供最大限度的灵活性,可以支持无法预测的各种细节层次的用户需求。
5、在同一个事实表中不能有多种不同粒度的事实,防止出现事实重复计算的问题。
6、同一张事实表的事实的单位要保持一致,如下单金额,优惠金额,需使用同一个单位(元或者美元)。
7、对事实的null值要处理,防止SQL过滤条件都不生效,一般用0填充。
8、使用退化维度提高事实表的易用性。根据经验建议将常用的维度信息退化到事实表中,减少关联维表的操作,提高效率。

三、事实表总体设计方法和步骤
1、选择业务过程及确定事实表类型。(必须)明确业务需求,需求分析,对业务整个生命周期进行分析,明确关键的业务步骤,选择与需求有关的业务过程。
2、声明粒度。(必须)精确定义事实表的每一行所表示的业务含义。
3、确定维度。(必须)
4、确定事实。(必须)
5、冗余维度(维度退化)。(可选)减少关联表的数量,提高效果,降低获取数据的复杂性

四、三种常见事实表及其设计步骤
4.1、事务事实表(一般放在dwd层)
用于直接描述业务过程,跟踪空间或者时间上的某点的度量事件,保存的是最原子的数据。
4.1.1、常见的两种事务事实表
4.1.1.1、单事务事实表
每个业务过程设计一个事实表。
优点:方便对每个业务过程进行独立的分析研究
4.1.1…2、多事务事实表
将不同的事实放到同一个事实表中,即同一个事实表包含不同的业务过程。
两种实现方式:
(1)将不同业务过程的事实使用不同的事实字段进行存放,不是当前业务过程的度量,则采取零值处理方式。
(2)将不同的业务过程的事实使用同一个事实字段进行存放,同时增加一个业务过程标签。
4.1.2、设计步骤参考总体设计方法和步骤。

4.2、周期快照事实表(一般放在dws层)
有规律性,可预见的时间间隔记录事实,聚集与之相关的事务进行识别计算,如每天,每月,每年等。
4.2.1、特点
(1)粒度通常以维度(一个或者多个)形式声明。
(2)相对事务事实表是稀疏的,快照事实表是稠密的(其实就是全量表,事务事实表是增量表)。
(3)事务事实表中的事实是完全可加的,快照事实表至少包含一个用来展示半可加性质的事实。
4.2.2、两种类型
(1)单维度的快照事实表:针对单个维度进行采样。
(2)混合维度的快照事实表:针对多个维度进行采样。
4.2.3、设计步骤
(1)确定快照事实表的快照粒度
通常是某个维度或者多个维度加上采样周期,比如针对卖家每天汇总事实表,记录历史至今的下单金额等状态量。
(2)确定状态度量
比如淘宝卖家历史至今汇总事实表,包含了历史截至当日的下单金额、历史截至当日的支付金额等度量,近7天,近一周,近一个月等。
4.2.4、数据来源
(1)对事务事实表进行汇总
(2)直接使用操作型系统的数据作为周期快照事实表的数据源进行加工,比如某个时刻的温度
4.2.5、注意事项
(1)事务与快照成对设计,快照事实表基于事务事实表加工得到,以满足更多的下游统计分析需求。
(2)附加事实:在表上附加一些上一个采样周期的状态度量,从而避免多次使用快照事实表。
(3)周期到日期度量:尽可能多的增加多种周期到日期的度量,比如淘宝卖家财年至今的下单金额、淘宝商品自然年至今的收藏次数等。

4.3、累积快照事实表(一般放在dws层)
表述业务过程开始和结束之间的关键步骤事件,覆盖过程的的整个生命周期,通常具有多个日期字段来记录关键时间点,当过程随着生命周期不断变化时,记录也会随着过程的变化而被修改。
4.3.1、设计步骤 (建模过程和事务事实表相同,适用于维度建模的步骤,有点细微的差别)
(1)选择业务过程:一般会同时涉及到多个业务过程。
(2)确定粒度:相对于事务事实表,每个事件会产生一行记录,对于多事件事实表也是,而对于累积快照事实表,一般只保留一行记录,但事件发生时,对此行记录进行更新。
(3)确定维度:关键事件生发的日期属于维度而不是事实。
(4)确定事实:因为涉及到多个业务过程,需要将各个业务过程对应的事实均放入到事实表中;
累积快照事实表解决的最重要的问题是统计不同业务过程之间的时间间隔,建议将每个过程的时间间隔作为事实放在事实表中。
(5) 退化维度
4.3.2、物理实现方式
(1) 全量表的形式
此全量表一般为日期分区表,每天的分区存储昨天的全量数据和当天的增量数据合并的结果,保证每条记录的状态最新。
(2)全量表的变化形式
根据业务实际情况,确定一个业务实体从产生到结束的时间间隔,每天的分区存储这个时间间隔的数据,历史数据则归档到归档分区中。
(3)以业务实体的结束时间分区
每天的分区存放当天结束的数据,未结束的数据则放到一个时间非常大的分区中,这样可以保证粒度全局唯一

4.4、三种事实表的比较
1、时期/时间角度
2、日期维度
3、粒度
4、事实
5、事实表加载
6、事实表是否更新

  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值