SSIS缓慢变化的维度

时间:2014-09-22 17:17:47

标签: sql ssis

使用SSIS函数Slow Changing Dimension时,如何在目标表中添加一列,告诉我记录何时是最新的?

我正在使用SSIS中的慢变维度函数将数据从我的Customer表移动到我的DimCustomer表中。但是,我想在我的DimCustomer名称'IsCurrent'中添加一列,告诉我何时我的值是否为当前值。但我不知道该怎么做。

基本上我记得如何撰写声明:WHEN EndDate IS NULL THEN 'Y' ELSE 'N'

需要您的帮助,找出如何跟踪我的当前和非当前值。

以下是我的客户表:

CREATE TABLE Customers (
CustomerNumber Char(8) PRIMARY KEY,
FirstName nvarchar(50) Not NULL,
MiddleName nvarchar(1) Null,
LastName nvarchar(50) Not Null,
EmailAddress nvarchar(320) Not Null,
Phone  varchar(25) Not Null,
Country nvarchar(20) Not Null,
City nvarchar(20) Not Null,
StateProvince nvarchar(10) Not Null,
Addressline1 nvarchar (250) Not Null,
Addressline2 nvarchar (250) Null
)

下面是我的DimCustomer表:

CREATE TABLE dbo.DimCustomers (
CustomerKey Int Identity(1,1) PRIMARY KEY CLUSTERED,
CustomerNumber Char(8) Not Null,
FirstName nvarchar(50) Not NULL,
MiddleName nvarchar(1) Null,
LastName nvarchar(50) Not Null,
EmailAddress nvarchar(320) Not Null,
Phone  varchar(25) Not Null,
Country nvarchar(20) Not Null,
City nvarchar(20) Not Null,
StateProvince nvarchar(10) Not Null,
Addressline1 nvarchar (250) Not Null,
Addressline2 nvarchar (250) Null,
StartDate Datetime Null,
EndDate Datetime Null,
IsInerred Bit Default(0))

1 个答案:

答案 0 :(得分:0)

除非必须,否则不要存储。

相反,请使用computed column

ALTER TABLE
    dbo.DimCustomers
ADD
    IsCurrent AS (CASE WHEN EndDate IS NULL THEN 'Y' ELSE 'N' END);

如果您绝对必须存储该值,那么从SSIS角度来看,您需要在数据流完成后拥有一个执行SQL任务。在那里,您需要制作适当的查询以重新计算IsCurrent值。