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

问题描述:

我发现很难理解如何将历史数据从事实表加入到具有更改的历史记录的Type2和Type1的维中。目前我在Dim中有一个代理键和业务键。 Fact Table具有Surrogate Key Fact表,并且我正在使用SSIS Lookup Component来恢复CurrentFlag设置为Yes的行。从SSIS中的SCD1和SCD2维度加载事实表

但是我加入了查找中的商业密钥并返回了代理。我知道的是我无法获取历史记录的主要原因,但是如果我现在正在加入业务密钥并返回业务密钥,那么SSIS组件将只返回一行,无论有多少版本您对该商业密钥的历史。

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

谢谢

说到历史尺寸,有几点需要注意。您的最终用户需要知道您要呈现的内容,并了解其差异。

例如,请考虑以下情形:

客户A位于拉斯维加斯2017年1月,他们订购的产品123,这在当时花费$ 125

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

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

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

如果您执行适当的历史记录跟踪,并实施逻辑以确定维度中某一行的开始日期和结束日期,则可以使用自然键以及适当的日期间隔将事实表加入维度。这应该会为事实表中的每个维度行返回一个单一值。如果它返回更多,你有重叠的日期。

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

+0

嗨施密茨,我的例子是当我加入商业密钥,例如有一个变化,它被跟踪为SCD维度。所以表中有两个相同的业务密钥号码,然而一个版本的SurrogateKey。 SSIS查找组件将只返回前1行而不是两个。然而,我真的需要知道他是如何做日期的事情,我有start_Date和End_Date以及currentflag,当前标志不足以在历史和当前之间切换吗? – abs786123