数据仓库建模(维度建模)-事实表设计

维度模型设计步骤
  • 选择业务过程
  • 声明粒度
  • 确定维度
  • 确定事实
事实表概述

事实表是数据仓库维度建模的核心,事实表是描述已经发生的业务过程,仅仅围绕业务过程设计,通过粒度和事实(度量)来描述。
其中事实又可以分为三种

  • 可加性事实 可以按照任意维度进行统计 如金额
  • 半可加性事实 可以按照指定维度进行统计 如库存 按照时间统计没有意义
  • 不可加性事实 不可以按照任意维度统计 如比例相关

事实表设计原则

  • 尽可能包含所有与业务过程相关的事实
  • 只选择与业务过程相关的事实
  • 分解不可加性事实为可加性事实
  • 选择事实之前优先确定粒度
  • 在同一个事实表中不能包含不同粒度的事实
  • 对null值进行处理
  • 事实的单位保持一致
  • 使用退化维度冗余字段提高事实表的易用性
事实表的设计方法
  • 选择业务过程并确定事实表类型
    一个业务过程多为事务事实表,多个业务过程,且分析业务过程之前的相互时间间隔则多为累积事务事实表
  • 声明粒度
    事实表的粒度选择尽量选择最细级别的原子粒度,确保最大的灵活性
  • 确定维度
    事实表的粒度确定之后就可以得到粒度属性相关的维度属性了,例如子订单粒度,相关的维度就可包含,渠道,门店,大区,买家,商品等
  • 确定事实
    如订单金额,优惠金额,毛利率等事实
  • 冗余维度
    在数据仓库维度建模中通过对事实表的维度融入从而得到更好的查询分析效率,因为减少了Join
    事实的设计原则
    事实的完整性、事实的一致性、事实的可加性
    事实表三种类型
    事务事实表,周期快照事实表,累积快照事实表
    周期快照事实表
    事务事实表的粒度能以多种方式表达,但快照事实表的粒度通常以维度形式声明事务事实表是稀疏的,但快照事实表是稠密的; 事务事实表中的事实是完全可加的,但快照模型将至少包含一个用来展示半可加性质的事实。一个周期内的事实 例如mtd,ytd 截止当日的订单,截止当日的交易金额等。
    设计步骤 : 确定粒度,确定状态度量
    快照事实表一般依赖于事务事实表生成
    注意事项
  • 事务事实表与快照事实表一般成对设计,既丰富了模型有便于下游的使用
  • 附加事实 一般应附加一些上一个采样周期的状态度量值
  • 周期到日期度量
    累积快照事实表
    累积快照事实表用于定义业务过程开始、 结束以及期间的可区分的里程碑事件。 累积快照事实表中的一行, 对应某一具体业务的多个状态。
    累积快照事实表的特点:数据不断更新,多业务过程多业务周期
    物理实现方式:
  • 全量表形式:每天的分区存储昨天的全量数据以及当天的增量数据合并之后的结果,保证记录最新,适用于数全量数据较少的情况
  • 全量表的变化形式:存储最近20天或者一段时间的全量数据,适用于数据量较大的情况下
  • 一业务实体的结束时间分区:每天的分区存放当天结束的数据,设计一个时间很大的分区存储当天未完成的数据。
逻辑汇总层

无论是事实表还是维度表在数据仓库建模中都是属于DWD层,在数据仓库中的建模中在一些情况下也是需要建立逻辑汇总层(DWS)的。对于汇总数据如果要经常使用到那么就有必要创建DWS层。
设计方法

  • 确定聚集维度
  • 确定一致性上钻
  • 确定聚集事实
    聚集事实不跨域

参考《大数据之路:阿里巴巴大数据实践》

你可能感兴趣的:(事实表设计)