Press "Enter" to skip to content

事实表和维度表的区别

将庞大的数据集组织成易于访问的结构至关重要。星型模式提供了一种有效的方法,包括两个关键要素:事实表和维度表。维度表环绕着一个中央的事实表,形成星型或雪花形状。对这些组件之间的明确区分需要全面掌握它们各自的概念和角色,以确保对它们特定目的的充分理解。现在让我们来探讨一下这两者之间的区别!

事实表与维度表

参数 事实表 维度表
基本 包含与业务事件相关的定量数据 为事实表中的数据提供描述性上下文和属性
创建顺序 在维度表之后创建 首先创建
组成部分 事实、度量和测量 描述性属性
组件数量 较少的属性和更多的记录 较少的记录和更多的属性
标记方式 粒度或原子级别 词汇、完整性、详细程度
层次结构 不存在 存在
在星型模式中的位置 中间 边缘
目的 分析和决策 数据和过程存储
增长 垂直 水平

什么是事实表?

事实表是从维度表派生的属性的全面集合。它包含了维度表属性对值的影响的定量数据。该表包含了用于分析的非规范化数据。事实表由两列组成,一列存储外键,另一列存储相应的数据或值。外键列与维度表属性相关联,而第二列包含数值。与较少属性的水平扩展相反,事实表中的垂直扩展更为显著,反映出记录数量的增加。

什么是维度表?

维度表是星型模式中为事实表提供可测量维度的重要部分。该表以千行为单位进行水平扩展,但更新不频繁。它按层次结构进行管理,并包含定量数据。维度表还包含两个键,即主键和代理键。主键用于确保每行或记录中存在唯一标识。系统生成的代理键与表中的行标识相关联。

事实表和维度表的特点

事实表和维度表的特点如下:

事实表的特点:

  1. 包含来自各个维度表的数据。
  2. 包含主键或外键,包括用于行标识的连接键。
  3. 高质量的事实表在最高级别上保存详细信息,信息的程度由事实表的粒度确定。
  4. 事实表中的数据记录不包含空值。
  5. 可能存在非可加性维度,反映无法简单相加的维度。
  6. 事实表属性根据其在维度上的行为被分类为完全可加性、半可加性和非可加性。
  7. 完全可加性属性在所有维度上都有值。相反,半可加性属性在特定维度上有值,而非可加性属性代表组织过程中的基本计量单位。
  8. 事实表维度根据基本维度进行行和列的细分。

维度表的特点:

  1. 包含提供事实表上下文的描述性文本或分类数据。
  2. 包含支持对事实表中的数据进行分组、过滤和分类的属性。
  3. 用于提供有关事实表中特定数据方面的业务上下文和详细信息。
  4. 通常记录较少,与事实表相比。
  5. 可以从不同的角度查询和分析数据,增强数据洞察力。
  6. 用于定义允许深入数据的层次结构。
  7. 由于数据去规范化,可能包含冗余数据,提高查询性能。
  8. 通常不直接连接,而是通过外键与事实表关联。
  9. 在星型模式或雪花模式设计中通常存在,以实现高效的数据组织。

类型:事实表 vs 维度表

有不同类型的事实和维度。此外,还有不同类型的事实表和维度表。

事实表的类型

事务事实表

它们捕获业务或事务事件的个体,一旦发生即刻记录。订单更新和销售操作中的离散动作就是一个例子。这些表也具有很高的细节级别,并且在大小上会显著增长。这些表适用于以粒度为单位进行数据分析。但是,它们可能需要复杂的查询以提高性能。

周期性快照表

这些表在预定义的时间间隔内存储聚合数据。这些表适用于存储特定时间段的汇总数据。当需要分析趋势和随时间变化的情况而不影响个体交易时,这一点非常重要。

累积快照表

这些表对于跟踪过程或工作流程随时间的进展非常重要。它们包含更浅显的信息,涵盖了不同过程的里程碑或阶段。在这些表中,行代表实体通过各个阶段的进展,进一步有助于对过程进行轻松跟踪和分析。应用领域包括项目管理、订单履行和生产周期。

无事实事实表

这些表缺乏可衡量的数值事实或数据。它们用于捕获维度之间的关系,这对于上下文分析至关重要。应用领域包括跟踪对业务流程重要的事件、发生情况或关联性。用户使用这些表来了解模式和趋势。

事实的类型

  • 总计事实 这些事实与平均值(average())、总和(sum())等聚合函数一起使用。
  • 半总计事实:它们需要一些聚合函数,如最小值(minimum())和最大值(maximum())。
  • 可加性事实:这些事实可以在维度之间求和,并与聚合函数一起使用。
  • 非可加性事实:它们涵盖了事实、百分比或比率的使用,聚合函数无法处理。

维度表的类型

维度表的类型因维度而异。这里列举了常见的类型:

缓慢变化的维度或 SCD

在这里,维度的变化比周期性变化慢。表的更改可以通过三种方式进行,即类型 1、类型 2 和类型 3。

  • 类型 1 包括覆盖先前的值,因此具有成本效益。但是,它也不考虑数据的历史记录。
  • 类型 2 包括添加新行和相应的值。在这里,历史记录保留,但会占用空间,因此会增加额外的开销。此外,信息细节会重复,因为所有实体都保持不变,只有少数值发生变化。
  • 类型 3 包括添加提供历史记录并防止额外成本损失的列。

退化维度

在这里,维度或属性存储在事实表中,而不是单独的维度表中。例如,发票或交易号码是退化维度。

垃圾维度

垃圾维度表包括了一系列无关和不同的属性。因此,该表较为简单,并且通常适用于快速变化的维度。

角色扮演维度

该表与事实表有许多有效的关系。它涉及使用特定属性来表示不同的多个属性。例如,日期维度可以用于“订单日期”和“发货日期”。

一致维度

该属性在数据仓库的多个位置中被用于事实表。它保持一致性并避免不一致。

示例:事实表 vs 维度表

让我们通过一些例子来理解事实表和维度表。假设某个行业生产面条。事实表包含有关食品加工、存储和交付信息的组织化数据。事实表的结构可以如下:

序号 计划措施
1 加工数据
2 包装数据
3 存储数据
4 交付数据

事实表组织了产品整体加工过程的计划措施的结构。维度表将使用事实表来创建,如下所示。

加工数据

该表中将报告有关加工的详细信息。

加工原料 供应商 过期日期
白面粉 供应商 A xx-xx-yy
供应商 B xx-xx-yy
供应商 C xx-xx-yy

包装数据

包装涉及特定的结构化信息。

包装材料ID 供应商 材料类型 单价
111 供应商 K 塑料 $10
112 供应商 L 纸板 $9.5
113 供应商 M 包装纸 $7.2

存储数据

存储信息通过维度表准备,对每个存储的产品进行了详细分析。

产品编号 监管人员 仓库编号 货架编号
51 人员 A B1 B-B2
52 人员 B C2 C-H13
53 人员 C H1 H-Y2

Delivery_Data

该维度表表示有关交付数据的组织观察。

货车代码 监督 交付城市 交付日期
AA2 代理人X 亚特兰大 xx-xx-yy
AA53 代理人Y 奥尔巴尼 xx-xx-yy
BC1 代理人Z 霍默维尔 xx-xx-yy

事实表和维度表的限制

事实表和维度表的限制如下:

事实表

  • 事实表被准备用于包含一定限度的数据,超过限度后不支持,并需要进行额外的修改,如重组表格和处理数据。
  • 如果数据源发生特定的更改,必须重新累积表格。
  • 事实表无法通过简单的解释来实现全面的解释。信息越多,查询性能越复杂。
  • 在实时分析或修改中,无法确保事实表的数据完整性。
  • 规模越大,事实表的性能维护越困难。

维度表

维度表存在一些限制:

  • 当值重复时,会出现数据冗余问题。通过去规范化解决问题可能会加剧问题。
  • 当维度属性及时发生变化时,历史数据和数据完整性变得非常困难。因此,为了保持准确性,需要使用各种类型的慢变维度(SCDs)。
  • 维度表是针对预累积信息的特定表,涵盖了分析需求的每个重要方面。因此,由于灵活性有限,可能需要定制数据的累积进行额外的处理。
  • 效率性能与可扩展性的增加不兼容。因此,需要有效的策略来保持分析速度和响应能力。
  • 不准确的数据可能会影响数据完整性,导致分析错误。

结论

总之,在数据仓库和商业智能系统中,理解维度表和事实表的作用对于有效的数据分析至关重要。准确区分这些表的应用广泛,对于无缝运营至关重要。事实表保存数值数据,而维度表为存储在事实表中的信息提供描述性上下文。在处理与“什么”和“多少”相关的查询时,请参考事实表。要了解“谁”、“在哪里”、“何时”和“为什么”的信息,请查阅维度表。这种基本理解可以实现对这些表的最佳利用,以增强决策和分析能力。

准备深入了解数据分析吗?通过Analytics Vidhya的Blackbelt计划将您的技能提升到一个新的水平,并在数据驱动的洞察力世界中脱颖而出。

常见问题

Leave a Reply

Your email address will not be published. Required fields are marked *