设为首页 加入收藏

TOP

使用SSISSlowChangingTransformation组件管理缓慢变化维(一)
2014-11-24 03:28:40 来源: 作者: 【 】 浏览:5
Tags:使用 SSISSlowChangingTransformation 组件 管理 缓慢 变化

最近尝试用SSIS自带的 Slow Changing Transformation组件处理缓慢变化维,看到有一篇文章写的很详细,就按照步骤进行操作同时进行翻译。原网址来自:Managing Slowly Changing Dimension with Slow Changing Transformation in SSIS。

介绍

作为数据库专家或者ETL的开发者你可能偶尔会碰到需要维护和管理缓慢变化唯的场景。在SQL Server中有多种方法来实现,最简单的是使用SSIS 数据流组件中的Slowly Changing DimensionTransformation。

在这片文章中,我会通过一个例子提供如何使用SSIS的Slowly Changing DimensionTransformation管理缓慢变化唯的步骤和指导。

理解缓慢变化维的场景

维度是数据管理和数据仓库中的术语。它指逻辑分组数据比如地理位置,客户或者产品信息。通过缓慢变化维(SCDs),数据缓慢变化而不是基于时间,定期的变化。~Wikipedia

有不同类型的缓慢变化唯独:

SCD Type 0 (Fixed) – 这种类型是最不常用的,在第一次插入后就固定了不接受变化。这意味着一旦写入,这些数据就不会被覆盖。 SCD Type 1 (Changing) – 这种类型,如果数据被更改,她会被新的值覆盖。

相关文章:

SQL Server 2012 Integration Services - Package DeploymentSQL Server 2012 Integration Services - Package and Project ParametersSQL Server 2012 Integration Services - Package VariablesSQL Server 2012 Integration Services - Package and Project ConfigurationsSQL Server 2012 Integration Services - Unattended Execution of SSIS PackagesSQL Server 2012 Integration Services - GUI-Friendly Ways of Managing Execution of SSIS Packages

例如考虑这个例子: 

SupplierCode

SupplierName

Address

S0000001

ABC Company

USA

S0000002

XYZ Corporation

USA

如果供应商的名字随着时间的推移被更改,正如你在下面看到的供应商的名字已经被新的记录更新了。这种看起来非常简单去实现,但是无法追踪历史记录。

SupplierCode

SupplierName

Address

S0000001

ABC Company Ltd.

USA

S0000002

XYZ Corporation

USA

SCD Type 2 (Historical) –在这个类型中,如果数据被更改,它将会保存一个新的记录,旧的记录被标志位过时的。

SupplierCode

SupplierName

Address

EffectiveDate

Expiration Date

S0000001

ABC Company

USA

3/2/2013

3/2/2013

S0000002

XYZ Corporation

USA

3/2/2013

S0000001

ABC Company Ltd.

USA

3/3/2013

为了维护SCD type 2,不同的人采用不同的方法。比如,一种方法是通过增加有效日期和过期日期表示记录是活跃的。如果截止日期为NULL表示当前的记录是活跃的。另外一种方法是添加一个标志列表示当前活动记录。通常人们会使用第一种方法或者两者的结合。 SCD Type 4 (Limited history) –这不是一个常用的类型因为只能维护有限的更改。在这种SCD类型中,通过表中添加额外的列保存旧值。

SupplierCode

SupplierName

Address

OldSupplierName

S0000001

ABC Company

USA

ABC Company Ltd.

S0000002

XYZ Corporation

USA

在SQLServer中有多种方法实现缓慢变化维度,最简单的是使用SSIS 数据流组件中的Slowly Changing Dimension Transformation,尽管会有一些限制,文章结尾的时候会提到这些限制。

在我开始Slowly Changing Dimension Transformation组件解释之前,让我先解释一下代理键并且为什么它对数据仓库很重要。我们经常会在维度中增加一个没有意义的键叫做代理键。代理键通常是整数,充当唯独表的唯一键或者主键,并且作为事实表外键约束。代理键对于管理缓慢变化唯变得非常重要。

使用Slowly Changing Dimension Transformation

我们首先创建一个供应商表并添加一些数据。你应该可以看到,我增加了SupplierCode字段作为主键,当作业务键。

USE [AdventureWorks2012]

GO

CREATE TABLE[dbo].[Supplier](

[SupplierCode] CHAR(8) PRIMARY KEY,

[SupplierName] [varchar](50)NULL,

[Address] [varchar](50)NULL,

) ON[PRIMARY]

GO

INSERT INTO[dbo].[Supplier]([SupplierCode],[SupplierName], [Address])

VALUES

('S0000001','ABC Company', 'USA'),

('S0000002','XYZ Corporation','USA')

GO

SELECT *FROM [dbo].[Supplier]

现在我们创建一个维度表存储供应商信息,你应该注意到我增加了SupplierId字段作为代理键,生效时间和截止时间用来追踪历史变化。另外我增加了CurrentFlag列用来标注当前记录是否活跃。

USE [AdventureWorks2012]

GO

CREATE TABLE[dbo].[DimSupplier](

[SupplierId] [int] IDENTITY(1,1)NOT NULL,

[SupplierCode] CHAR(8),

[SupplierName] [varchar](50)NULL,

[Address] [varchar](50)NULL,

[EffectiveDate] [date] NULL,

[ExpirationDate] [date] NULL,

[CurrentFlag] [char](1) NULL,

CONSTRAINT [PK_DimSupplier] PRIMARY KEY CLUSTERED ([SupplierId]ASC)

) ON[PRIMARY]

GO

到目前为止一切顺利,现在我们创建一个SSIS包,增加一个数据流任务,拖入数据源组件从原始表获取数据。现在新增一个SlowlyChanging Dimension

首页 上一页 1 2 下一页 尾页 1/2/2
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Ubuntu13.04下配置Eclipse的Xdebu.. 下一篇游标cursor

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·python数据分析岗的 (2025-12-25 10:02:21)
·python做数据分析需 (2025-12-25 10:02:19)
·成为一个优秀的pytho (2025-12-25 10:02:16)
·Java后端面试实习自 (2025-12-25 09:24:21)
·Java LTS版本有哪些 (2025-12-25 09:24:18)