事实表与维度表
Posted 宝哥大数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了事实表与维度表相关的知识,希望对你有一定的参考价值。
文章目录
前言
事实表包含系统的事实作为其数据内容,维度表包含事实表的所有属性或对象,这些属性或对象有助于将事实表连接到各个维度表。两个表中的数据都可以是普通的文本格式,而事实表可以有数字和文本。在创建数据库的过程中,维度表由于其自身的特性,先于事实表创建。
一、事实表
数据仓库系统中的事实表只不过是包含所有事实或业务信息的表,可以在需要时进行分析和报告活动。这些表包含表示直接事实的字段,以及用于将事实表与数据仓库系统中的其他维度表连接起来的外部字段。一个数据仓库系统可以有一个或多个事实表,这取决于用于设计数据仓库的模型类型。
1.2、事实表的特征
- 键: 它有一个键或一个主键,它是与其链接的所有维度表的所有主键的累积。该键称为串联键,有助于唯一标识该行。
- 事实表粒度: 表的粒度描述了该表中包含的信息的详细程度或深度。级别越高,表的效率越高。
- 添加度量: 此中存在的属性可以是完全添加、非添加或半添加。将完全可加或可加的度量添加到所有维度。半加性是添加到某些维度而非所有维度的那些度量,非加性度量是存储业务流程的基本度量单位。
- 稀疏数据: 有些记录的属性包含空值或度量。他们不提供任何信息。
- 收缩汇总维度: 收缩汇总维度是基础维度的细分。
1.3、事实表的类型
它分为三个基本测量事件
- 事务性
- 定期快照
- 累积快照
1.3.1、交易事实表
这是业务运营的基本和基本观点。它用于表示在任何瞬时时间点发生的事件。事实度量仅对那个特定时刻有效,并且只对那个事件有效。与事务表关联的粒度指定为“事务中每行一行”。通常,它包含详细级别的数据,这导致它具有大量关联的维度。它在最基本的或原子级别的维度上捕获测量。这有助于表格为用户提供强大的维度分组、汇总和向下钻取报告功能。它密集而稀疏。它可能很大,可能包含数十亿条记录。让我们看一个杂货店销售的例子。
1.3.2、快照事实表
快照给出了特定时间实例或“瞬间图片”的事物状态。它通常包括更多的非加成和半加成事实。它有助于定期和可预测的时间间隔审查业务的累积绩效。在这种情况下,表示在每天或一周或一个月或任何其他时间间隔结束时的活动性能,这与事务事实表不同,其中为每个事件的发生添加新行。但是快照事实表或定期快照依赖于事务事实表来获取事务事实表中存在的详细数据。周期快照表大多是密集的,并且可以像事务事实表一样大。让我们看一下交易事实表中同一家杂货店销售额的定期快照示例。
1.3.3、积累事实表
这些用于表示具有明确定义和明确开始和结束的任何流程的活动。累积快照大多具有多个数据戳,代表生命周期中发生的可预测阶段或事件。有时会有一个额外的列包含显示该行上次更新时间的日期。让我们看一个例子。
1.4、它如何在数据仓库中工作?
它基本上代表与事件相关的指标。任何事实表的含义都必须由表名或表主键的组成来表示。最重要的选择是决定主键。也可以创建代理键作为主键。如果用户不想使用代理键,那么他可以使用指向与事实相关的维度组合的外键组合。使用外键可以了解 表的粒度 或 粒度。
Kimball 描述了可以遵循的四个设计步骤:
- 选择要建模的业务流程。
- 声明谷物。
- 选择维度。
- 识别事实。
1.5、事实表的优点
- 它包含用于分析的定量信息。
- 它包含的性能指标通常是标准化的。
- 它可以包含不同的度量,如加性、半加性和非加性。
二、维度表
维度表存在于星型或雪花模型中。维度表有助于描述维度,即维度值、属性和键。它的尺寸通常很小。大小可以从几行到几千行不等。它描述了事实表中存在的对象。维度表是指与任何可测量事件相关的信息的集合或组。它们构成了维度建模的核心。它包含一个可以被视为主键列的列,有助于唯一标识每个维度行或记录。它通过这个键与事实表连接。创建时,系统生成的称为代理键的键用于唯一标识维度中的行。
为什么我们需要使用?
- 它有助于存储历史信息或维度信息。
- 它比规范化表更容易理解。
- 可以向表中添加更多列,而不会影响使用这些列的现有应用程序。
2.1、维度表类型
2.1.1、SCD(缓慢变化维)
倾向于随时间缓慢变化而不是在固定时间间隔内变化的维度属性称为缓慢变化维度。例如地址和电话号码更改但不定期更改。让我们看一个例子,一个人去不同的国家旅行,所以他需要根据那个国家改变他的地址。这可以通过三种方式完成:
类型 1:覆盖之前的值。这种方法易于应用,有助于节省空间从而降低成本。但是,在这种情况下,历史丢失了。
更改前的表
ID | 姓名 | 国家 | 国籍 |
---|---|---|---|
1001 | 雷切尔 | 印度 | 印度人 |
更改后的表
ID | 姓名 | 国家 | 国籍 |
---|---|---|---|
1001 | 雷切尔 | 中国 | 印度人 |
类型 2:添加具有新值的新行。在这种方法中,历史被保存并且可以在必要时使用。但占用空间大,增加了成本。
更改前的表
ID | 姓名 | 国家 | 国籍 |
---|---|---|---|
1001 | 雷切尔 | 印度 | 印度人 |
更改后的表
ID | 姓名 | 国家 | 国籍 |
---|---|---|---|
1001 | 雷切尔 | 印度 | 印度人 |
1001 | 雷切尔 | 中国 | 印度人 |
类型 3:添加新列。这是最好的方法,因为历史可以轻松维护。
更改前的表
ID | 姓名 | 国家 | 国籍 |
---|---|---|---|
1001 | 雷切尔 | 印度 | 印度人 |
更改后的表
ID | 姓名 | 国家 | 老国家 | 国籍 |
---|---|---|---|---|
1001 | 雷切尔 | 中国 | 印度 | 印度人 |
2.1.2、一致维度
该维度在多个主题领域或数据集市之间共享。同样可以在不同的项目中使用,而无需在同一项目中进行任何修改。这用于保持一致性。一致维度是那些完全相同或任何其他维度的适当子集的维度。
2.1.3、垃圾维度
垃圾维度是一组低基数的属性。它包含与任何其他属性无关的不同或各种属性。这些可用于实现 RCD(快速变化的维度),例如标志、权重等。
2.1.4、退化维度
它存储在事实表本身中而不是作为单独的维度表存储的属性,这些属性称为退化维度。例如票号、发票号、交易号等。
2.1.5、角色扮演维度
与事实表的多重关系称为角色扮演维度。换句话说,当同一个维度键及其所有相关属性与事实表中的许多外键连接时。它可以在同一个现有数据库中实现多种用途。
2.2、它在数据仓库中是如何工作的?
- 维度是指与任何可测量事件相关的信息的集合或组。它们构成了维度建模的核心。创建维度时,会生成项目的结构。Created 可以跨不同的项目使用,它反映了可重用性的想法。当其中任何一项发生更改时,其影响仅反映在该特定表中。当要创建报告时,用户可以从维度表中获取数据,因为维度表包含所有必要的信息。
- 当执行维度建模时,原子数据被加载到维度结构中。然后围绕业务流程生成或构建维度模型。创建时必须记住过滤域值并将报告的标签存储在这些表中。必须确保在创建维度表时必须使用代理键(在创建维度表期间使用的系统生成的键,它有助于唯一标识维度表中存在的每条记录。)。它必须是非规范化的,因为它们的任务是让用户轻松高效地读取和分析数据,而不是管理事务。维度的主要目的是提供过滤、执行分组和高效标记。
2.3、维度表的好处
- 它具有简单的结构。
- 很容易分析和理解。
- 非规范化数据。
- 有助于维护任何维度的历史信息。
- 很容易从中检索数据。
- 快速创建和实施。
- 它提供了任何业务流程的上下文。
三、维度表 vs 事实表
3.1、事实表和维表之间的主要区别
- 事实表包含维度表的属性的值或度量。
- 事实表包含更少的属性和更多的记录,而维度表包含更少的记录和更多的属性。
- 事实表垂直增长,而维度表水平增长。
- 事实表包含一个连接键,而维度表包含一个主键。
- 必须在创建事实表之前创建维度表。
- 任何模式都包含更多的维度表和更少的事实表。
3.2、对比项
特征 | 事实表 | 尺寸表 |
---|---|---|
基本定义 | 它包含属性的度量、事实或度量。 | 它是包含使用哪个事实表推断事实的属性的伴随表。 |
设计 | 它由数据粒度定义。 | 它是描述性的、完整的和冗长的。 |
任务 | 它包含度量并用于分析和决策。 | 它包含有关业务及其流程的信息。 |
数据类型 | 它包含数字和文本格式的数据。 | 它只包含文本格式的数据。 |
key | 每个维度都有一个主键,作为维度表中的外键。 | 它有一个与事实表的主键相关联的外键。 |
存储 | 它将过滤器域和报告标签存储在维度表中。 | 它将详细的原子数据存储到维度结构中。 |
等级制度 | 它没有层次结构。 | 它包含一个层次结构。 |
属性 | 它的属性较少 | 更多属性 |
记录 | 更多记录 | 记录少。 |
表增长 | 桌子垂直增长。 | 桌子水平增长。 |
创建时间 | 创建维度表后,会创建事实表。 | 首先需要创建维度表。 |
模式结构 | 模式中的事实表数量较少。 | 模式中有许多维度表。 |
关注我的公众号【宝哥大数据】,更多干货
以上是关于事实表与维度表的主要内容,如果未能解决你的问题,请参考以下文章