Slowly Changing Dimension 简称 SCD 是数据仓库建模和处理过程中一个很重要的概念,因为数据仓库系统的主要功能是对历史数据进行汇总和分析,所以保存历史记录的变化是很重要的。SCD是用来处理 Dimension 表变化的一种设计理论。SCD 通常使用三种类型:
类型1 (Type 1): 覆盖旧记录。有些Dimension 表从业务上讲不需要保存历史记录或者只需要对原有记录进行修改。比如说 Customer 表中有 Customer 地址的属性,原有的地址输入错误我们需要修改这个属性而不需要对原有的错误地址进行保存,这个时候就可以使用 SCD Type 1。需要注意的是 SCD 是一种修改 Dimension 表记录的方法,而不是设计 Dimension 结构的方法,但是在设计 Dimension 表的结构的时候我们通常需要考虑这个 Dimension 表是否需要处理 SCD 的三种类型。
类型2 (Type 2): 增加新记录。Type 2 是精确捕获Dimension 表历史变化的一种标准的方法,它通过对数据源表的Change Data Capture (CDC) 机制来捕获数据源的变化,然后在 Dimension 表中插入一个新的记录再使旧的相应的记录实效。通常能够处理 SCD Type2 的表包含下面的字段:
- Date Changed: 记录改变的时间戳
- Row Effective Data Time(Start Date): 记录有效的起始时间
- Row End Date Time: 记录终止(失效)的时间
- Reason for Change:改变的原因
- Current Flag (or Active Flag/Status):指示是否是当前的记录
在实际的设计中不一定全部包括上面的字段,但是 Start Date, End Date 和 Active Flag 是一定要包括的。如下图所示的一个例子
Rob Walters 有两条记录,第一条记录从 1998-01-05 至 2000-06-30 在 Tool Design 部门工作,第二条记录显示从 2006-06-30 至今 (EndDate 为空) 在 Engineering 部门工作,而 Status 列跟据 EndDate 是否为空表示为 ‘Current’ 或者 Null,如果为 Null, 则表示该记录已经过期。通常,Start Date 和Data Changed 采用系统时间,或者直接将该属性的默认值设计为系统时间;记录的终止时间默认值是NULL 或者是 12-31-9999 (当前数据属性的最大值),取决于 Cube 中的设计。
类型3 (Type 3): 增加新字段。有时候我们需要一种简便的方法来在一条记录上跟踪 Dimension 表属性的变化,也就是说在当前的记录上同时显示当前的属性值和过去的属性值,这时候我们就需要增加一个新的字段来处理这种需要,如下图所示:
在图中,使用 PreviousDepartmentName 来显示当前DepartName 的上一个值。
在实际应用中 Type 1 和 Type 2 是最为常用的,也常常会在同一个 Dimension 表中的不同的属性上实现不同的 SCD, 比如说在上图的例子中,如果 LastName 输入错误了,就不需要对错误的记录进行保存,直接用正确的值替换,这就是 Type 1; 如果DepartmentName 改变了,则需要保存它的历史记录,就是 Type 2; 所以这种处理方法也叫做 Hybrid SCD – 混合型 SCD。需要注意的是,在实现 SCD Type 1 的表上,如果这个Dimension 表同时包含了处理 SCD Type 2 的结构,我们需要将所有的该属性的值进行修改。比如在图中,如果要修改 Rob Walters 的 LastName, 则需要将所以的他的记录全部修改,不论记录的Status 值是什么。
实现 SCD, 需要在数据源上实现有效的 Changing Data Capture (CDC)机制,我的下一篇文章将介绍 CDC 的一些基本知识。
分享到:
相关推荐
数据仓库缓慢变化维解决方案 缓慢变化维(Slowly Changing Dimensions,简称 SCD)是数据仓库和数据管理中一个重要的概念,指的是维度数据中的缓慢变化,例如客户信息、产品信息、地理位置等。缓慢变化维的处理是...
"Informatica缓慢变化维"是数据仓库领域中的一个重要概念,主要处理数据随时间逐渐变化的情况。在数据仓库中,维度表通常用来描述事实表中的事件,而这些维度属性有时会发生变化,但并不是立即反映在历史记录中。...
在数据仓库领域,**缓慢变化维**(Slowly Changing Dimensions, SCD)是一种重要的数据处理策略,它旨在跟踪和记录随着时间推移维度数据的变化情况。不同于在线交易处理(OLTP)系统,数据仓库系统不仅需要提供实时...
在数据仓库领域中,**缓慢变化维**(Slowly Changing Dimension, SCD) 是一个非常重要的概念。它指的是那些随着时间逐渐发生变化的数据。这些数据通常包含在维度表中,用于支持业务分析和报告。在构建数据仓库时,...
在数据仓库设计中,处理缓慢变化维有多种策略,Informatica PowerCenter 支持以下三种主要方式: 1. **保持最新值**(Keep Most Recent Values in Target):这种方法只保留最新的值,历史记录被最新的信息覆盖。在...
本资源提供了一个数据仓库架构师的笔试题,涵盖了多个方面的知识点,包括缓慢变化维、数据仓库设计模式、实体关系设计、Join 方式、索引类型、SQL query 优化等。这些知识点都是数据仓库架构师必须掌握的基础知识。 ...
3. **剧烈变化维度**:数据频繁变化,如库存量、价格等,这类维度通常需要特殊处理,以避免数据仓库的频繁更新,可能会将其分解为多个缓慢变化维度进行管理。 ### 维度处理对策 维度的处理策略取决于业务需求和...
缓慢变化维是数据仓库中的一个概念,指的是数据表中的某些属性值随着时间缓慢变化或几乎不变化。在遥信数据中,设备的某些状态可能长时间保持不变,但一旦发生变化,通常意味着关键事件的发生。利用这种特性,我们...
ETL(Extract, Transform, Load)是构建数据仓库的核心过程,包括数据抽取、转换和加载三个阶段。本资料《数据仓库ETL工具箱》详细介绍了在这一领域中的关键技术和实践。 1. **数据抽取**:数据抽取是从源头系统中...
维度建模是一种广泛应用于数据仓库领域的数据结构设计方法,其目标是简化复杂的数据关系,以便于数据的查询和分析。书中将详细介绍事实表和维度表的设计原则,以及如何构建星型模式或雪花模式等常见架构。 #### 5. ...
维度建模是一种专门用于构建数据仓库和商务智能系统的数据模型设计方法。它强调了业务理解和报表需求,通过创建易于理解的“维度”(如时间、地点、产品等)和“事实”(业务度量)来组织数据。书中可能详细介绍了...
此外,书中的章节涵盖了维度建模的最佳实践,如延迟维度转换、缓慢变化维度处理、粒度转换以及时间维度的设计。这些内容对于处理数据的变化和历史记录的保留至关重要。书中还特别提到了如何处理不规则或非典型的数据...
在数据仓库的建设过程中,维度建模是一种常用的方法,它是关系数据库设计的一种特殊形式,特别适用于数据仓库和OLAP(在线分析处理)环境。维度建模的核心思想是将数据以易于理解的业务术语(如时间、地点、产品等)...
在数据仓库设计和维护中,一个重要的概念就是**缓慢变化维**(Slowly Changing Dimension, SCD)。这类维表的特点是其值可能会随时间发生变化,但历史数据仍需保留旧值以便进行分析。在Oracle Data Integrator (ODI)...
正确处理这些缓慢变化维度是数据仓库设计的关键,确保历史数据的准确性和查询性能。 ### 数据仓库与数据集市 数据集市(Data Marts)是针对特定业务部门或主题的数据仓库子集,通常作为企业级数据仓库的前置或补充...
数据仓库是专门设计用于支持决策分析的大型数据库,通常由以下几种架构组成: 1. **星型架构**: - **核心特征**:以一个中心的事实表为核心,周围围绕着多个维度表。 - **优点**:查询效率高,结构简单直观。 -...
- **缓慢变化维 (Slowly Changing Dimensions)**:处理维度表中的数据变更问题,确保历史记录的准确性。 - **主键检索 (Key Lookup)**:提高了查找维度表中主键值的效率。 - **数据备份与恢复**:采用Piecemeal备份...