我目前面临的问题是我认为是合乎逻辑的,也许是SSIS的局限性。
我的数据有一组帐户,任何时候该帐户都可以由组织拥有。这种组合控制着我的“帐户”的历史维度
例如
╔════════════╦═══════════════╦════════════════╦════════════╦════════════╦═════════╗
║ AccountKey ║ AccountNumber ║ OrganisationSK ║ VaildFrom ║ VaildTo ║ Current ║
╠════════════╬═══════════════╬════════════════╬════════════╬════════════╬═════════╣
║ 1 ║ 2000 ║ 10 ║ 2000-01-01 ║ 2006-02-10 ║ N ║
╠════════════╬═══════════════╬════════════════╬════════════╬════════════╬═════════╣
║ 2 ║ 2000 ║ 11 ║ 2006-02-10 ║ 2010-06-01 ║ N ║
╠════════════╬═══════════════╬════════════════╬════════════╬════════════╬═════════╣
║ 3 ║ 2000 ║ 10 ║ 2010-06-01 ║ NULL ║ Y ║
╚════════════╩═══════════════╩════════════════╩════════════╩════════════╩═════════╝
这样做很容易,因为我只是让SCD来做,这是我一直在努力的初始负载。
使用SSIS作为我的ETL工具,我是否可以使用内部联接,给我三个记录,通过“ ValidFrom”对它们进行排序,然后将所有三个记录传递给SCD,SSIS可以解决问题?
在这种情况下,人们过去做过什么?
答案 0 :(得分:0)
您可以使用Merge Transformation在SSIS中使用内部联接。链接如下:
合并联接的要求之一是对两个数据源中联接的至少一列进行排序,以便可以按所需的“ ValidFrom”列对数据进行排序。
然后可以将“合并联接”输出连接到SCD转换。
请注意,合并联接转换是半块转换,因此如果您处理大量数据,则可能会影响ETL性能。