事实表与维度表

维度建模理论之事实表

事实表概述

事实表是数据仓库唯独建模的核心,包含维度外键(简述为操作(事实表的操作)所处的环境(who?where?when?等有关联的东西))和该业务过程的度量(可累加的数字类型的字段)

事实表特点

事实表一般呈细长:列比较少,行比较多,且行的增速快

事实表分类

事实表有三种类型:分别是事务事实表、周期快照事实表和累积快照事实表

事务型事实表

通常使用此类事实表,其余两种均在指定时才使用
通常一个业务建一个事务事实表,事务事实表保存的各业务过程的原子操作事件,即最细粒度的操作事件,粒度是指事实表中一行数据所表达的业务细节程度。

设计流程
四个步骤:选择业务过程->声明粒度->确认维度->确认事实
1)挑选感兴趣的业务过程,通常一个业务过程对应一张事务事实表
2)应该尽可能选择最细的粒度,保证数据的一致性
典型的粒度声明如下:
订单事实表中一行数据表示的是一个订单中的一个商品项。
3)维度应该尽可能的多,维度的丰富程度决定了维度模型能够支持的指标丰富程度
4)事实指度量值(比如次数、个数、金额)
不足之处
1)存量型指标
即商品库存、账户余额等。由于一般的事实表对于存量划分为购买(获取)存量数据和消费(使用)存量数据,所以此处存量数据通常需要通过两个表进行聚合才能得到统计结果。一般使用周期快照事实表。
2)多事务关联统计
会使用到多表join,大表join大表应该尽量避免,一般这种情况使用累积快照事实表。

周期快照事实表

周期快照事实表通常以有规律可预见的时间来记录事实(一天)、来记录存量型(商品库存、账户余额)或者状态型指标(汽车行驶速度、温度)。

设计流程
确认粒度->确认维度->确认事实
周期型快照事实表的粒度可由采样周期和维度描述,采样周期可以是一天等,维度和事实由需求决定

累积型快照事实表

累计快照事实表是基于一个业务流程中的多个关键业务过程联合处理而构建的事实表,如交易流程中的下单、支付、发货、确认收货业务过程。
通过建立多个时间维度来进行维护,每次有新的时间维度通过Insert overwrite...join...来进行维度的更新

事实类型

1.可加事实
度量值对所有维度进行进行聚合都有意义叫可加事实
2.半可加事实
度量值对所有维度进行进行聚合部分没有意义叫半可加事实
3.不加事实
通常为比率型事件,可以通过转换为可加事实

维度表

事实表中每一个维度都可以对应一个维度表,很多事实表可以与同一个维度表相关,这时只需要创建一个维度表,维度表由一个主键和多个维度(维度属性)组成,当维度属性很少就可以维度退化即维度属性直接加在与之相关的事实表中

确定维度属性时,需要遵循以下要求:
(1)尽可能生成丰富的维度属性
(2)尽量不使用编码,而使用明确的文字说明,一般可以编码和文字共存。
(3)尽量沉淀出通用的维度属性

维度设计要点

规范化为雪花型,反规范化为星型,多个业务的反规范化维度表为星座型

维度变化

1)全量快照表
一般为每天进行同步一次,采用全量同步
优点是简单而有效,开发和维护成本低,且方便理解和使用。
缺点是浪费存储空间,尤其是当数据的变化比例比较低时。
2)拉链表
采用增量同步,它维护了开始日期和结束日期两个字段
适用于表数据量大但是增量小的表,可以节省存储空间

多值维度

如果事实表中一条记录在某个维度表中有多条记录与之对应,称为多值维度。
通常采用以下两种方案解决。
第一种:降低事实表的粒度,例如将订单事实表的粒度由一个订单降低为一个订单中的一个商品项。
第二种:在事实表中采用多字段保存多个维度值,每个字段保存一个维度id。这种方案只适用于多值维度个数固定的情况。

多值属性

维表中的某个属性同时有多个值,称之为“多值属性”
第一种:将多值属性放到一个复杂数据类型中,该字段内容为key1:value1,key2:value2的形式,例如一个手机商品的平台属性值为“品牌:华为,系统:鸿蒙,CPU:麒麟990”。
第二种:将多值属性放到多个字段,每个字段对应一个属性。这种方案只适用于多值属性个数固定的情况。

数据仓库的分层

ODS:原始数据层[保存没有做任何变动的原始数据]
DWD:数据明细层[事实表]
DIM:公共维度层[维度表]
DWS:公共汇总层[包含业务过程相同、统计周期相同、统计粒度相同的多个派生指标]
ADS:数据应用层[保存需求指标结果]

数据分层的好处:
1.隔离原始数据
2.可以减少数据重复计算
3.数据的计算的目标要更加明确

  • 1
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值