将庞大的数据集组织成易于访问的结构至关重要。星型模式提供了一种有效的方法,包括两个关键要素:事实表和维度表。维度表环绕着一个中央的事实表,形成星型或雪花形状。对这些组件之间的明确区分需要全面掌握它们各自的概念和角色,以确保对它们特定目的的充分理解。现在让我们来探讨一下这两者之间的区别!
事实表与维度表
参数 | 事实表 | 维度表 |
---|---|---|
基本 | 包含与业务事件相关的定量数据 | 为事实表中的数据提供描述性上下文和属性 |
创建顺序 | 在维度表之后创建 | 首先创建 |
组成部分 | 事实、度量和测量 | 描述性属性 |
组件数量 | 较少的属性和更多的记录 | 较少的记录和更多的属性 |
标记方式 | 粒度或原子级别 | 词汇、完整性、详细程度 |
层次结构 | 不存在 | 存在 |
在星型模式中的位置 | 中间 | 边缘 |
目的 | 分析和决策 | 数据和过程存储 |
增长 | 垂直 | 水平 |
什么是事实表?
事实表是从维度表派生的属性的全面集合。它包含了维度表属性对值的影响的定量数据。该表包含了用于分析的非规范化数据。事实表由两列组成,一列存储外键,另一列存储相应的数据或值。外键列与维度表属性相关联,而第二列包含数值。与较少属性的水平扩展相反,事实表中的垂直扩展更为显著,反映出记录数量的增加。
什么是维度表?
维度表是星型模式中为事实表提供可测量维度的重要部分。该表以千行为单位进行水平扩展,但更新不频繁。它按层次结构进行管理,并包含定量数据。维度表还包含两个键,即主键和代理键。主键用于确保每行或记录中存在唯一标识。系统生成的代理键与表中的行标识相关联。
事实表和维度表的特点
事实表和维度表的特点如下:
事实表的特点:
- 包含来自各个维度表的数据。
- 包含主键或外键,包括用于行标识的连接键。
- 高质量的事实表在最高级别上保存详细信息,信息的程度由事实表的粒度确定。
- 事实表中的数据记录不包含空值。
- 可能存在非可加性维度,反映无法简单相加的维度。
- 事实表属性根据其在维度上的行为被分类为完全可加性、半可加性和非可加性。
- 完全可加性属性在所有维度上都有值。相反,半可加性属性在特定维度上有值,而非可加性属性代表组织过程中的基本计量单位。
- 事实表维度根据基本维度进行行和列的细分。
维度表的特点:
- 包含提供事实表上下文的描述性文本或分类数据。
- 包含支持对事实表中的数据进行分组、过滤和分类的属性。
- 用于提供有关事实表中特定数据方面的业务上下文和详细信息。
- 通常记录较少,与事实表相比。
- 可以从不同的角度查询和分析数据,增强数据洞察力。
- 用于定义允许深入数据的层次结构。
- 由于数据去规范化,可能包含冗余数据,提高查询性能。
- 通常不直接连接,而是通过外键与事实表关联。
- 在星型模式或雪花模式设计中通常存在,以实现高效的数据组织。
类型:事实表 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计划将您的技能提升到一个新的水平,并在数据驱动的洞察力世界中脱颖而出。