事实表与维度表
在数据仓库架构中,事实表(Fact Table)是存储业务过程度量值或事实的核心表结构。它是星型模式或雪花模式中的中心表,与多个维度表相关联。
事实表具有以下关键特征:
- 包含业务过程的量化指标(事实),如销售额、订单数量、库存量等
- 通常包含外键(Foreign Key)用于关联维度表
- 数据量通常非常庞大,可能包含数百万甚至数十亿行记录
- 记录通常是只读的,反映历史业务活动
事实表中的事实可以分为三种类型:
- 可加性事实:可以按照任何维度进行汇总(如销售额)
- 半可加性事实:只能在部分维度上汇总(如账户余额)
- 不可加性事实:不能进行汇总(如单价、百分比)
事实表的粒度(Granularity)是指表中每一行数据所代表的业务含义,常见粒度包括:
- 交易级别:每条记录代表一个交易(如单个订单项)
- 快照级别:定期记录状态(如每日库存快照)
- 累积快照:跟踪业务过程多个阶段(如订单从创建到交付)
常见事实表
常见的事实表:订单事实表 事实表的特点:表多(各种各样的事实表),数据量大 事实表根据数据的粒度可以分为:
- 事务事实表
- 周期快照事实表
- 累积快照事实表
常见维度表
维度表(维表)可以看做是用来分析数据的角度,维度表中包含事实数据表在中事实记录的特性。有些特性提供描述性信息,有些特性指定如何汇总事实数据表数据,以便为分析者提供有用的信息。 常见维度表:
- 时间维度
- 地域维度
- 商品维度
简单小结
- 事实表是关注的内容(如:销售额、销售量)
- 维度表是观察事务的角度
事实表分类
事务事实表
事务事实表记录的事务层面的事实,保存的是最原子的数据,也称为”原子事实表”。事务事实表中的数据在事务事件发生后产生,数据的粒度通常是每个事务一条记录。 一旦事务被提交,事实表数据被插入,数据就不再进行更改,其更新方式为增量更新。 事务事实表的日期维度记录的是事务发生的日期,它记录的事实是事务活动的内容。如:订单表。通过事务事实表,还可以建立聚集事实表,为用户提供高性能的分析。
周期快照事实表
周期快照事实表以规律性的、可预见的时间间隔来记录事实,时间间隔如每天、每月、每年等等。典型的例子如销售日快照表、库存日快照表等。它统计的是间隔周期内的度量统计,如历史至今、自然年至今、季度至今等等。
累积快照事实表
累积快照事实表和周期快照事实表虽然都是用于存储事务数据的快照信息,但在设计理念和应用场景上存在显著差异。
-
时间周期特性:
- 周期快照事实表:记录固定时间间隔(如每日、每周、每月)的静态快照数据。例如银行账户的月末余额快照。
- 累积快照事实表:跟踪跨越不确定时间段的完整业务流程,通常包含多个里程碑日期。例如订单处理流程中的各个关键节点时间。
-
日期字段设计:
- 累积快照事实表包含多个日期维度:流程起始日期(如订单创建日期)、中间过程日期(如审批日期、发货日期)、完成日期(如收货日期)、最后更新日期(记录数据补充时间)
- 在初始加载时,未来日期通常使用特殊代理键(如-1表示”未发生”)占位
-
数据更新机制:
- 周期快照事实表通常是只读的,反映特定时间点的状态
- 累积快照事实表支持更新操作,当业务流程推进时,可以补充后续日期信息
-
典型应用场景:
- 订单处理全流程跟踪(创建→付款→发货→收货)
- 保险理赔流程(报案→定损→核赔→支付)
- 客户服务工单(创建→分配→处理→关闭)
雪花模型
雪花模型是星型模型的变种,维表是规范化的,模型类似雪花的形状。 特点:雪花结构去除了数据冗余。 星型模型存在数据冗余,所以在查询统计时只需要做少量的表连接,查询效率高。星型模型不考虑维表正规化的因素,设计、实现容易。 在数据冗余可接受的情况下,实际上使用星型模型比较多。
雪花模型的结构
事实表: 雪花模型的核心部分还是事实表,事实表通常存储了业务事件的度量数据,如销售额、订单数量等。 事实表包含指向维度表的外键。
维度表: 在雪花模型中,维度表进行规范化,意味着同一维度中的不同属性会拆分成多个子表。 例如,“客户”维度可能包含多个层级的属性:客户的基本信息可能存储在一个表中,而客户的地址信息可能存储在另一个单独的表中。
雪花模型的优缺点
优点:
- 数据冗余较低:由于维度表被规范化,雪花模型减少了数据的冗余
- 存储空间节省:由于规范化结构减少了重复数据
- 数据一致性较好:由于每个属性只存在于某个特定的维度表中
事实星座
数据仓库由多个主题构成,包含多个事实表,而维表是公共的,可以共享,这种模式可以看做星型模式的汇集。因而称作星系模式或者事实星座模式。 特点:公用维表
元数据
元数据(Metadata)是关于数据的数据,元数据打通了源数据、数据仓库、数据应用,记录了数据从产生到消费的全过程。元数据就相当于所有数据的地图,有了这张地图就能知道数据仓库中:
- 有哪些数据
- 数据分布的情况
- 数据类型
- 数据之间有什么关系
- 哪些数据经常被使用,哪些数据很少有人光顾
在大数据平台中,元数据贯穿大数据平台数据流动的全过程,主要包括数据源元数据、数据加工处理过程元数据、数据主题专题库元数据、服务层元数据、应用层元数据等。
业务通常把元数据分为以下类型:
- 技术元数据:库表结构、数据模型、ETL程序、SQL程序等
- 业务元数据:业务指标、业务代码、业务术语等
- 管理元数据:数据所有者、数据质量、数据安全等