【问题标题】:SSIS Slow Changing DimensionSSIS 渐变维度
【发布时间】:2014-09-22 17:17:46
【问题描述】:

当使用 SSIS 函数缓慢变化的维度时,我如何向目标表中添加一个列来告诉我我的记录何时是最新的?

我正在使用 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))

【问题讨论】:

    标签: sql ssis


    【解决方案1】:

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

    改为使用computed column

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

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

    【讨论】:

      猜你喜欢
      • 2017-09-26
      • 1970-01-01
      • 2015-12-28
      • 2020-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多