【问题标题】:Loading Fact tables from SCD1 and SCD2 Dimension in SSIS从 SSIS 中的 SCD1 和 SCD2 维度加载事实表
【发布时间】:2017-08-11 08:24:14
【问题描述】:

我发现很难理解您如何将历史数据从事实表连接到具有类型 2 和类型 1 的维度以获取已更改的历史记录。目前我在 Dim 中有一个代理键和业务键。事实表具有事实表的代理键,我目前正在使用 SSIS 查找组件来恢复将 CurrentFlag 设置为 Yes 的行。

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

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

谢谢

【问题讨论】:

    标签: sql-server ssis


    【解决方案1】:

    关于历史维度,有一些注意事项。您的最终用户需要知道您展示的是什么,并了解其中的差异。

    例如,考虑以下场景:

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

    现在是八月。与此同时,客户于 5 月搬到华盛顿特区,产品 123 于 7 月更新,售价为 145 美元。

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

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

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

    您能否向我们展示您从查找中仅收到一个值的逻辑,即使您有更多记录?

    【讨论】:

    • 嗨 Schmitz,我的例子是当我加入业务密钥时,例如它有一个被跟踪为 SCD 维度的变化。所以表中有两个相同的业务密钥,但是一个版本的代理密钥。 SSIS 查找组件将只返回前 1 行,而不是两者。但是,我真正需要知道他是如何处理日期的,我有 start_Date 和 End_Date 以及一个 currentflag,当前标志是否不足以在历史和当前之间切换?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多