数仓--DW--Hadoop数仓实践Case-12-事实表概述

前言--先弄明白理论性知识,再利用理论指导实践--李小李

  • 发生在业务系统中的操作型事务, 其所产生的可度量数值, 存储在事实表中, 从最细节粒度级别看, 事实表和操作型事务表的数据有一一对应的关系。 因此, 数据仓库中事实表的设计应该依赖于业务系统, 而不受可能产生的最终报表影响。 除数字类型的度量外, 事实表总是包含所引用维度表的外键, 也能包含可选的退化维度键或时间戳。 数据分析的实质就是基于事实表开展计算和聚合操作。
  • 事实表中的数字度量值可划分为可加、 半可加、 不可加三类。
    • 可加--可加性度量可以按照与事实表关联的任意维度汇总, 就是说按任何维度汇总得到的度量和是相同的, 事实表中的大部分度量属于此类。
    • 半可加--半可加度量可以对某些维度汇总, 但不能对所有维度汇总。 余额是常见的半可加度量, 除了时间维度外, 它们可以跨所有维度进行加法操作。
    • 不可加 --另外, 还有些度量是完全不可加的, 例如:比例。 对不可加度量, 较好的处理方法是尽可能存储构成不可加度量的可加分量, 如构成比例的分子和分母, 并将这些分量汇总到最终的结果集合中, 而对不可加度量的计算通常发生在BI层或OLAP层。
  • 事实表中可以存在空值度量。 所有聚合函数, 如sum、 count、 min、 max、 avg等均可针对空值度量计算, 其中sum、 count(字段名)、 min、 max、 avg会忽略空值, 而count(1)或count(*)在计数时会将空值包含在内。 然而, 事实表中的外键不能存在空值, 否则会导致违反参照完整性的情况发生。 关联的维度表必须用默认代理键而不是空值表示未知的条件。
  • 很多情况下数据仓库需要装载如下三种不同类型的事实表。
    • 事务事实表: 以每个事务或事件为单位, 例如一个销售订单记录、 一笔转账记录等, 作为事实表里的一行数据。 这类事实表可能包含精确的时间戳和退化维度键,其度量值必须与事务粒度保持一致。 销售订单数据仓库中的sales_order_fact表就是事务事实表。
    • 周期快照事实表: 这种事实表里并不保存全部数据, 只保存固定时间间隔的数据, 例如每天或每月的销售额, 或每月的账户余额等。
    • 累积快照事实表: 累积快照用于跟踪事实表的变化。 例如, 数据仓库可能需要累积或存储销售订单从下订单的时间开始, 到订单中的商品被打包、 运输和到达的各阶段的时间点数据来跟踪订单生命周期的进展情况。 当这个过程进行时, 随着以上各种时间的出现, 事实表里的记录也要不断更新。

你可能感兴趣的:(数仓--DW--Hadoop数仓实践Case-12-事实表概述)