使用合并语句在缓慢变化的维度类型2中复制数据

时间:2017-10-17 14:10:04

标签: sql sql-server sql-server-2012

我有一个如下数据,我正在尝试实现一个缓慢变化的维度-2

 DECLARE @MYTABLE TABLE
    (
       LocalID INT,
       STDID INT,
       MYDATE DATE,
       SKU VARCHAR(100),
       LOCALPRICE DECIMAL(8,2)
    )

INSERT INTO @MYTABLE
    SELECT 1000004, 1038, '2017-10-17',34106860642, 5215 UNION ALL
    SELECT 1000004, 1038, '2017-10-17',34106860642, 5648 UNION ALL
    SELECT 1000004, 1038, '2017-10-17',34106860642, 5615 UNION ALL
    SELECT 1000004, 1038, '2017-10-17',34106860642, 5901

但数据的问题是:创建一个

的组合键时会出现重复
LocalID, STDID, and SKU

由于密钥重复,因此合并语句会产生错误。

如何在实施 SCD-TYPE 2 时处理此类数据?

1 个答案:

答案 0 :(得分:0)

慢慢更改类型2的维度是指保持维度的先前状态和新状态。为了做到这一点,你必须有一个将它们彼此分开的列(键列)。因此,您可以在维度表中为ID添加列,而不使用您正在使用的组合。或者添加一个额外的列,如版本或有效日期或类似的东西,并在密钥中包含该列。根据您的需要,您可以使用版本列,其值为1,2,3,4或有效日期列(此处可以查看更改发生的时间)或当前列设置为1而其他列设置为0 (但如果密钥仅基于此,您将再次拥有重复项)