从SSIS中的SCD1和SCD2维度加载事实表

时间:2017-08-11 08:24:15

标签: sql-server ssis

我发现很难理解如何将历史数据从事实表连接到具有Type2和Type1的Dimension,以用于已更改的历史记录。目前我在昏暗中有一个代理键和业务键。事实表具有Surrogate Key the Fact表,我当前正在使用SSIS Lookup Component将CurrentFlag设置为Yes的行恢复。

但是,我正在加入Lookup中的Business Key并返回Surrogate。我所知道的是我无法获得历史记录的主要原因,但是如果我正在加入商业密钥并且正在返回业务密钥,那么SSIS组件只会带回一行,无论有多少您对该商业密钥的历史版本。

我想知道或被告知的是使用查找来填充事实表,但是这似乎并没有真正给我历史记录,因为它只会返回一行。所以我只想知道如何在SSIS中返回事实和维度之间的历史日期。

谢谢

1 个答案:

答案 0 :(得分:0)

在历史方面,有几点需要注意。您的最终用户需要知道您所呈现的内容,并了解其中的差异。

例如,请考虑以下情形:

客户A于2017年1月位于拉斯维加斯。他们订购了产品123,当时售价125美元。

现在是八月。与此同时,客户于5月迁至华盛顿特区,而产品123于7月更新至145美元。

您的最终用户需要告知您他们想要看到的内容。如果您没有跟踪历史记录,只是每天截断并加载所有内容,您的订单报告将显示以下内容:

位于华盛顿特区的客户A在1月份订购了145美元。

如果您实现了正确的历史记录跟踪,并实现了逻辑来标识维度中行的开始日期和结束日期,则可以使用自然键以及正确的日期间隔将事实表连接到维度。这应该为事实表中的每个维度行返回一个值。如果它返回更多,则表示日期重叠。

即使你有更多记录,你能告诉我们你从查询中只收到一个值的逻辑吗?