3.3 数据仓库建模
DW 三种常见模型:E/R 关系、维度和 Data Vault 模型。
3.3.1 E/R 范式建模
参见 数据模型。
3.3.2 kimball 维度模型
《The Data Warehouse Toolkit: The Definitive Guide to Dimensional Modeling (3rd ed.)》
评论 :《数据仓库工具箱(第 3 版)-- 维度建模权威指南》英文初版 1996 年,二版 1998 年,三版 2015 年。kimball 是本书作者,也是 kimball 集团的创始人。第三版共 21 章其中 14 章是 14 个行业的建模案例。
表格 6 维度建模常用术语
名词 | 定义 |
---|---|
维度 | Dimension,相当于 SQL 中的 GROUP BY |
度量 | 对于在事实表或者一个多维立方体里面存放的数值型的、连续的字段,就是度量。 |
cube 立方体 | 指的是维度的组合,是 2^N。如 3 个维度有 8 种组合(1,2,3,12,13,23,123,空)。 |
事实表 | 数据仓库结构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(例如产品销售)内特定事件的数据。 |
维度表 | 维度属性的集合。可分为细节维度和维度子集(子维度,如更高粒度的汇总)。 |
层次维度 | 如日期有四个层次:年、季度、月和日。 |
退化维度 | 指减少维度的数量,通常被保留作操作型事务的标识符。 |
杂项维度 | 一种包含的数据具有很少可能值的维度,如标志和指示符字段。 |
周期事实表 | |
累积事实表 |
维度模型常见的有:星型、雪花。
核心概念:事实表、维度表、度量、粒度。
事实表 :事实表是数据仓库结构中的中央表,它包含联系事实与维度表的数字度量值和键。事实数据表包含描述业务(例如产品销售)内特定事件的数据。
维度表 :维度表是维度属性的集合。是分析问题的一个窗口。是人们观察数据的特定角度,是考虑问题时的一类属性, 属性的集合构成一个维。把逻辑业务比作一个立方体,产品维、时间维、地点维分别作为不同的坐标轴,而坐标轴的交点就是一个具体的事实。也就是说事实表是多 个维度表的一个交点,而维度表是分析事实的一个窗口。
度量 :对于在事实表或者一个多维立方体里面存放的数值型的、连续的字段,就是度量。这符合上面的意思,有标准,一个度量字段肯定是统一单位,例如元、户数。
粒度:
维度模型的逻辑表示:星型、雪花型。
构建过程
选择业务流程。
声明粒度。粒度用来确定事实中表示是什么。
确认维度。
确认事实。
维度表技术
维度表(Dimension Table)是数据仓库中存储描述性信息的表,用于为事实表中的数值数据提供上下文。维度表通常包含业务分析所需的详细信息,帮助用户理解和分析数据。
维度表的主要特点:
描述性 :
- 维度表存储的是非数值型的描述性信息,如产品名称、客户姓名、时间等。
多值属性 :
- 维度表可以包含多个属性,以提供丰富的上下文。例如,一个产品维度表可能包含品牌、类别、颜色等属性。
主键 :
- 每个维度表都有一个主键(通常是一个唯一标识符),用于在事实表中关联。
数据层次 :
- 维度表可以具有层次结构,如时间维度可能包括年、季度、月、日等不同层级。
维度表的设计原则:
星型模型 :
- 维度表围绕事实表组织,形成简单易懂的结构。每个维度表直接与中心事实表相连。
雪花模型 :
- 在星型模型的基础上,维度表进行规范化,形成多层次的结构。虽然结构复杂,但可以减少冗余。
维度表的历史管理 :
- 慢变维度(SCD) :管理维度表中的历史数据变化。例如:
- 类型 1 :直接覆盖旧值,不保留历史。
- 类型 2 :保留历史,通过添加新记录来跟踪变化。
- 类型 3 :只保留有限的历史数据,通过增加新的字段来跟踪。
- 慢变维度(SCD) :管理维度表中的历史数据变化。例如:
维度表的类型:
静态维度 :
- 属性值变化不频繁,如国家或地区信息。
动态维度 :
- 属性值经常变化,如客户的联系信息。
角色扮演维度 :
- 在不同上下文中扮演不同角色的维度表,例如“日期”维度可以在销售和交付中分别使用。
维度表的应用:
- 数据分析 :帮助分析师理解数据背后的业务含义。
- 报告生成 :支持基于维度的数据报告,如销售按地区、产品类别分析。
- 数据挖掘 :提供丰富的特征用于模型训练和预测分析。
总结:
维度表是数据仓库设计中的重要组成部分,通过组织和存储描述性数据,帮助用户更好地理解和分析事实数据。良好的维度表设计可以提高数据仓库的性能和可用性,使企业能够更有效地利用数据进行决策和战略规划。
事实表技术
事实表(Fact Table)是数据仓库中存储数值型度量和关键业务事件的表。它是数据仓库的核心,主要用于支持分析和报告。事实表通常与维度表一起使用,通过外键与维度表关联,提供上下文信息。
事实表的主要特点:
数值型度量 :
- 事实表中的数据通常是可以量化的指标,如销售额、订单数量、利润等。
主键 :
- 事实表通常没有单一主键,而是由多个外键组成,这些外键引用相关的维度表。
时间敏感 :
- 事实表中的数据通常与时间相关,例如交易的日期和时间。
高粒度 :
- 事实表的粒度定义了数据的详细程度,可能是每个交易、每天的汇总,或更高层级的汇总。
事实表的设计原则:
粒度确定 :
- 在设计事实表时,需要明确粒度,即每条记录代表的数据的细节程度。粒度的确定影响到数据的存储、性能和查询效率。
外键设计 :
- 每个事实表都应该包含外键,这些外键指向相关的维度表。确保这些关系的正确性,有助于提高查询效率。
度量值选择 :
- 选择合适的度量值,以便支持业务分析。常见的度量包括销售额、订单数、退款金额等。
多维建模 :
- 事实表通常与多个维度表关联,形成星型或雪花模型,支持多维数据分析。
事实表的类型:
增量事实表 :
- 记录每次业务事件的发生,适用于需要精确追踪的场景。
汇总事实表 :
- 存储按某些维度汇总的数据,例如按月的销售总额。这种表通常用于提高查询性能。
快照事实表 :
- 在特定时间点记录的事实数据,用于时间序列分析。例如,每天的库存快照。
事实表的应用场景:
- 业务分析 :支持管理层进行销售、财务等方面的分析。
- 报告生成 :为各种报告提供基础数据,如财务报告、运营报告等。
- 数据挖掘 :提供数据支持,用于机器学习和预测分析。
总结:
事实表是数据仓库设计的核心组成部分,存储着关键的业务指标和事件数据。通过合理设计事实表,可以有效支持业务分析和决策,提高企业的运营效率。合理的粒度、外键设计和度量选择是确保事实表有效性的关键因素。
3.3.3 Data Vault 模型
此模型有中心表(HUB)、链接表(LINK)、附属表(SATELLITE)三个主要组成部分。中心表记录业务主键,链接表记录业务关系,附属表记录业务描述。
Data Vault 是一种数据仓库建模方法,旨在提供灵活、高效且可扩展的数据集成解决方案,特别适用于处理快速变化和复杂的数据环境。该模型由 Dan Linstedt 提出,特别适合大规模企业的需求。
Data Vault 的核心概念:
三种主要组件 :
- Hub(中心) :存储业务实体的唯一标识符,表示核心业务概念(如客户、产品等)。每个 Hub 只包含唯一键和一些元数据(如加载时间、来源系统等)。
- Link(连接) :存储 Hub 之间的关系,表示实体之间的关联。每个 Link 记录了参与关系的 Hub 及其相关的元数据。
- Satellite(卫星) :存储与 Hub 或 Link 相关的描述性属性和历史数据。卫星表可以包含变化的属性,支持慢变维度管理。
灵活性和可扩展性 :
- Data Vault 模型设计允许随时添加新的 Hub、Link 和 Satellite,适应业务变化和新数据源的集成。
历史追踪 :
- 通过卫星表,Data Vault 可以有效地跟踪历史数据变化,支持时间维度分析。
解耦合 :
- Hub、Link 和 Satellite 的分离设计使得数据模型解耦,便于管理和扩展。
Data Vault 的建模步骤:
识别业务实体 :
- 确定业务中核心的实体(Hub),例如客户、订单、产品等。
定义关系 :
- 确定这些实体之间的关系(Link),例如客户与订单之间的关系。
属性收集 :
- 收集与每个 Hub 和 Link 相关的属性,并设计卫星表以存储这些属性。
实现 ETL 流程 :
- 开发 ETL 流程以从不同数据源提取数据,转换为 Data Vault 模型,并加载到相应的 Hub、Link 和 Satellite 表中。
Data Vault 的优缺点:
优点:
- 灵活性 :能够轻松适应数据源和业务需求的变化。
- 历史管理 :支持对历史数据的有效管理。
- 适合大规模 :设计适合于处理大规模数据和复杂关系。
缺点:
- 学习曲线 :对于不熟悉的团队,Data Vault 的概念和设计可能需要一定时间来掌握。
- 复杂性 :数据模型相对较复杂,可能导致初期实施时的挑战。
应用场景:
- 大数据环境 :适合于需要整合多个数据源的大型企业。
- 快速变化的业务 :企业业务需求和数据源频繁变化时,Data Vault 能够提供灵活的解决方案。
- 历史数据分析 :需要对历史数据进行深入分析的业务场景。
总结:
Data Vault 模型提供了一种灵活、可扩展和历史友好的数据仓库建模方法,适合于处理复杂的业务环境和快速变化的数据需求。通过 Hub、Link 和 Satellite 的结构,Data Vault 能够有效地整合和管理大量的业务数据,为企业决策提供有力支持。
3.3.4 Anchor 模型
Anchor 模型是一种数据建模方法,旨在创建一个灵活和可扩展的数据仓库结构,适合处理复杂数据和动态需求。它由 数据建模专家 Lynx 提出,尤其适用于需要快速适应变化和支持高效查询的环境。
Anchor 模型的核心概念
Anchor(锚) :
- Anchor 是数据模型的核心,代表一个具体的业务实体(如客户、产品等)。每个 Anchor 通常包含一个唯一标识符(主键),以及与该实体相关的属性。
Attribute(属性) :
- 属性是与 Anchor 相关的字段,描述了该业务实体的特征。属性可以是静态的,也可以是动态变化的。
Link(连接) :
- Link 用于表示 Anchor 之间的关系,定义了不同业务实体之间的联系。每个 Link 连接两个或多个 Anchors,并可能包含与关系相关的属性。
History(历史) :
- Anchor 模型支持历史数据的管理,通过在属性上增加时间戳来跟踪数据的变化。这种设计使得用户可以轻松地查看数据在不同时间点的状态。
Anchor 模型的设计原则
灵活性 :
- Anchor 模型的设计非常灵活,允许根据需要添加或修改 Anchors 和 Links,从而快速适应业务变化。
去冗余 :
- 通过将数据分解为多个 Anchors 和 Links,Anchor 模型减少了数据冗余,提高了数据的存储效率。
历史跟踪 :
- 设计允许通过时间戳轻松追踪历史数据变化,支持历史分析和时间序列查询。
Anchor 模型的优缺点
优点:
- 高灵活性 :适应快速变化的业务需求,易于扩展。
- 简单直观 :数据模型清晰,易于理解和维护。
- 历史数据管理 :方便地跟踪和分析历史数据变化。
缺点:
- 复杂性管理 :随着业务的扩展,模型可能变得复杂,需要有效的管理和治理。
- 性能考虑 :在某些情况下,频繁的连接操作可能影响查询性能。
应用场景
- 动态数据环境 :特别适合于业务需求变化频繁、数据源多样化的环境。
- 历史分析 :需要对历史数据进行深入分析和追踪的场景。
- 复杂数据关系 :支持多维度和复杂关系的数据分析。
总结
Anchor 模型是一种灵活、可扩展的数据建模方法,适合现代企业在复杂和动态数据环境中的应用。通过将数据分解为 Anchors、Attributes 和 Links,Anchor 模型能够有效地支持数据整合和分析,为企业决策提供可靠的数据基础。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论