2014-09-22 73 views
0

当使用SSIS函数Slow Changing Dimension时,如何向目标表中添加一列,以告诉我何时我的记录是最新的?SSIS缓慢变化的尺寸

我正在使用SSIS中的缓慢更改维度函数将数据从我的客户表移动到我的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)) 

回答

0

不要存放它,除非你要。

相反,使用computed column

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

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