6.1 事实表特性

事实表有三种类型:

  • 事物事实表:
    • 用于跟踪业务过程,保存的是最原始的数据,也称“原子事实表”
    • 每个事务一条记录
    • 增量更新
  • 周期快照事实表:
    • 面对具有一定时间间隔规律的事实过程,通常以每天每月每年等作为时间间隔
    • 记录时间段内的聚集事实值
    • 增量更新
  • 累积快照事实表:

    • 用来跟踪实体的一些列业务过程的进展情况,通常具有多个日期字段,用于研究业务过程中的里程碑过程的时间间隔
    • 与周期快照事实表的差别是周期的不确定性
    • 许多字段在首次加载时是未知的,可更新

      6.1.1 事实表设计原则

  • 尽可能包含所有与业务过程相关的事实

  • 只选择与业务过程相关的事实
  • 分解不可加性事实为可加组件(订单和优惠)
  • 在选择维度和事实之前必须先声明粒度
  • 在同一个事实表中不能有多种不同粒度的事实
  • 事实的单位要保一致
  • 对事实的NULL值要处理
  • 使用退化维度提高事实表的易用性

    6.1.2 事实表设计方法

  1. 选择业务过程及确定事实表类型(淘宝订单:创建、付款、发货、收获)
  2. 声明粒度(尽量选择原子粒度)
  3. 确定维度
  4. 确定事实(金额,邮费,优惠金额等)
  5. 冗余维度(维度退化)

    6.2 事务事实表

    事物事实表,即针对发货签收等过程构建的一类事实表,用以跟踪定义业过程的个体行为,提供丰富的分析能力,作为数据仓库原子的明细数据。
  • 单事务事实表:每个业务过程设计一个事实表
  • 多事务事实表:
    • 不同业务过程的事实使用不同的事实字段进行存放(差异大,零值多)
    • 不同业务过程的事实使用同一个事实字段进行存放,但增加一个业务过程标签(差异不大,但会多条记录)

      6.3 周期快照事实表

      然而,当需要一些状态度量时,比如账户余额、买卖家星级、商品库存、卖家累积交易额等,则需要聚集与之相关的事务才能进行识别计算;或者聚集事务无法识别,比如温度等。
  1. 用快照采样状态
  2. 快照粒度
  3. 密度与稀疏性
  4. 半可加性,不能根据时间维度获得有意义的汇总结果
    事务与快照成对设计

    6.4 累积快照事实表

    对于类似研究事件之间时间间隔的需求,采用累积快照事实表可以很好的解决。
    特点:
  • 数据不断更新
  • 多业务过程日期

    6.5 三种事实表的比较

    | 特点 | 事务事实表 | 周期快照事实表 | 累积快照事实表 | | —- | —- | —- | —- | | 时间/时期 | 时间 | 时期 | 时间跨度较短的多个时点 | | 粒度 | 每行代表一个交易事件 | 每行代表一个时间周期 | 每行代表一个业务周期 | | 事实表加载 | 新增 | 新增 | 新增和修改 | | 事实表更新 | 不更新 | 不更新 | 业务推进时更新 | | 时间维 | 业务日期 | 时期末 | 多个业务过程的完成日期 | | 事实(举例) | 交易记录 | 时间周期内的绩效 | 限定多个业务阶段内的绩效 |