数据仓库设计之事实表的设计
1. 概念
事实表是数据仓库中的一种核心表,它存储了企业或组织内关键的度量值(即“事实”)以及与这些度量相关联的维度引用。事实表中的每条记录通常代表了一个特定粒度级别的事件或事务。例如,在零售业中,一条销售记录可以表示一次单独的销售交易;在银行业,它可以是一次存款或者取款操作。
2. 主要特征
粒度:定义了每个事实记录所代表的具体业务活动的级别。
事实:量化描述业务活动的数据项,如销售额、成本、数量等。
维度引用:通过外键关联到维度表,提供关于事实发生的上下文信息,如时间、地点、产品等。
类型:根据事实表中包含的事实类型,可以分为事务性事实表、周期快照事实表和累积快照事实表等不同类型。
3. 事实表的分类
事实表根据其存储数据的性质和使用目的可以分为以下几种类型:
3.1 事务事实表(Transaction Fact Table)
定义:记录了单个事务级别的详细信息。每个事务通常对应事实表中的一行。
特点:粒度较细,能够提供详细的交易数据支持精确分析。
示例:销售订单、银行转账记录等。
3.2 周期快照事实表(Periodic Snapshot Fact Table)
定义:定期(如每日、每月)对业务状态进行一次快照记录。
特点:适合于需要查看一段时间内变化趋势的情况,而不是每次变化的具体细节。
示例:月度账户余额、季度库存水平报告等。
3.3 累积快照事实表(Accumulating Snapshot Fact Table)
定义:跟踪一个过程从开始到结束的状态变化,直到该过程完成。
特点:适用于有明确起始点和终点的过程,可以用来监控过程中的关键里程碑。
示例:订单处理流程、保险理赔进度等。
3.4 无事实的事实表(Factless Fact Table)
定义:这种表实际上并不包含传统的数值型事实字段,而是通过维度间的关联来表示某些事件的发生。
特点:主要用于记录事件的发生频率或存在性,而不是具体的度量值。
示例:用户登录日志、系统访问记录等。
每种类型的事实表都有其适用场景,并且在设计时需要考虑数据仓库的具体需求以及最终用户的查询模式。选择合适类型的事实表对于优化性能、简化数据模型和支持有效的数据分析至关重要。在实际应用中,可能还会遇到混合类型的事实表设计,根据具体情况灵活调整以满足特定的业务需求。