【数仓】事实表设计

今天学习第 11 章事实表设计。关注公众号回复 802 获取 pds。

1.事实表基础
1.1 事实表特性

粒度:一条记录表达的业务细节称为粒度。

  • 维度属性组合所表示的细节程度;
  • 所表示的具体业务含义。

作为度量业务过程的事实,一般为整型或浮点型数值,类型:

  • 可加性事实:可以在任意维度汇总;
  • 半可加性事实:只能按照特定维度汇总,比如库存,可以按地点、商品汇总,不能按时间汇总,没意义。
  • 不可加性事实:比如比率型。

与维度表相比,事实表细长,行增加快。

维度属性也可以存储到事实表中,称为退化维度,也可以用于对事实表过滤查询、聚合。

类型:

  • 事务事实表:描述业务过程,保存最原子的数据
  • 周期快照事实表:具有规律性、可预见的时间间隔记录事实
  • 累计快照事实表:表述过程开始和结束之间的关键步骤事件,覆盖整个生命周期,具有多个日期字段,随着过程变化修改。
1.2 事实表设计原则
  1. 尽可能包含所有与业务过程相关的事实
  2. 只选择与业务过程相关的事实:例如下单这个业务过程,不应包含支付金额(这是支付业务过程)。
  3. 分解不可加性事实为可加的组件。例如订单优惠率,分解为原价、优惠金额。
  4. 在选择维度和事实之前必须先声明粒度:粒度确定事实表中一行所表示业务的细节层次,粒度越细越好,从原子粒度开始。
  5. 在同一个事实表中不能有多种不同粒度的事实。
  6. 事实的单位要保持一致。
  7. 对事实的 null 值要处理。建议用零值填充。
  8. 使用退化维度提高事实表的易用性。
1.3 事实表设计方法
  1. 选择业务过程及确定事实表类型。业务过程通常使用行为动词表示,例如创建订单、付款、发货、确认收货。如果选择了所有四个业务过程,还需要包含四个业务过程的累积快照事实表。
  2. 声明粒度。尽量选原子粒度。比如用户一个订单买了多种商品,每个子订单对应一种商品,那么应该选择子订单。
  3. 确定维度。比如事实表粒度为子订单,维度有买家、卖家、商品、收货人、业务类型、订单时间等。
  4. 确定事实。事实通过“过程的度量是什么“来确定。比如订单付款事务事实表,事实有支付金额、邮费、优惠金额等。
  5. 冗余维度。传统的星形模型做法是维度单独存放在维度表,通过事实表的外键获取维度。但考虑到下游的使用效率,会在事实表中冗余常用维度,便于过滤查询、控制聚合层次、排序等。比如订单付款事务事实表中冗余常用维度字段以及商品类目、卖家店铺等维度。
2.事务事实表
2.1 设计过程

定义:任何事件都可以被理解为事务。例如创建订单、付款等。

设计过程:

  • 选择业务过程
  • 确定粒度
  • 确定维度
  • 确定事实
  • 冗余维度
2.2 单事务事实表

针对每个业务过程设计一个事实表。

2.3 多事务事实表

将不同的事实放到同一个事实表中。两种实现方式:

  • 不同业务过程使用不同事实字段存放;
  • 不同业务过程使用相同事实字段存放,但增加一个业务过程标签。
2.4 两种事实表对比
  1. 业务过程:单事务事实表一个业务过程一个事实表,多事务事实表同一个事实表反映多个业务过程。
  2. 粒度和维度:不同业务粒度相同且有相似维度时才能使用多事务事实表。
  3. 事实:单事务事实表处理事实更灵活方便。
  4. 下游业务使用:单事务事实表下游用户更容易理解。
  5. 计算存储成本:多事务事实表更优。
2.5 父子事实的处理方式

例如用户下单多个商品。交易事务事实表的粒度选择子订单(一个订单一种商品)。

2.6 事实的设计原则
  1. 事实完整性
  2. 事实一致性
  3. 事实可加性
3.周期快照事实表

确定的事件间隔内对实体的度量进行抽样。

3.1 特性
  1. 用快照采样状态:快照事实表以预定的间隔采样状态度量。
  2. 快照粒度:多维声明,即采样周期以及什么将被采样。
  3. 密度与稀疏性:快照事实表是稠密的,无论当天是否有业务过程发生,都会记录一行。
  4. 半可加性:不能根据时间维度获取有意义的汇总结果,但可以求平均值。
3.2 主要事项
  1. 事务与快照成对设计
  2. 附加事实:可以附加上一个周期的状态度量,便于分析使用
  3. 周期到日期度量:多种统计周期,例如财年至今的下单金额、自然年至今的下单金额
4.累积快照事实表

用来统计下单到支付的时长、支付到发货的时长、下单到确认收货的时长等。

4.1 设计过程

同事务事实表一样:选择业务过程、确定粒度、确定维度、确定事实、退化维度。

4.2 特点
  1. 数据不断更新
  2. 多业务过程日期
4.3 特殊处理
  1. 非线性过程:例如下单→支付→发货→确认收货,不一定都是这样的过程,可能是下单→关闭订单。
  2. 多源过程:来自不同的系统或表。
  3. 业务过程取舍:简化一些业务过程。
4.4 物理实现
  • 全量表。一般是日期分区表
  • 全量表的变化形式。用于事实表数据量大时。比如交易订单设置 200 天作为订单产生到消亡的最大间隔,设计最近 200 天的订单累积快照事实表。
  • 以业务实体的结束时间分区。每天分区是存放当天结束的数据,未结束的放在一个极大的时间下面比如 3000-12-31。
5.三种事实表的比较

在这里插入图片描述

6.无事实的事实表

没有明确事实,但可以用来支持业务过程的度量。例如:

  • 记录事件发生:用户浏览了页面,每次浏览事实为 1;
  • 条件、资格、范围类,例如促销范围。
7.聚集型事实表

把频繁使用的公用数据聚集汇总进行沉淀,被称为”公共汇总层“。例如卖家近 N 天的交易汇总表。

7.1 聚集的基本原则
  • 一致性
  • 避免单一表设计
  • 聚集粒度可不同
7.2 聚集的基本步骤
  • 确定聚集维度
  • 确定一致性上钻
  • 确定聚集事实

欢迎关注。
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值