SSIS合并吗?

时间:2017-03-16 18:16:34

标签: sql ssis

我有两个数据集。一个是维度表,其数据类似于以下示例

Table1

Key    StartDate     EndDate       Name       Data_1
1      2017-01-01    2017-01-03    Billy G    58uf
2      2017-01-10    2017-01-12    S Dogg     4940

我还有一个名为dbo.DimDate的标准日期维度。如何将日期维度合并到Table1上,以便Table1包含每条记录的StartDate和EndDate之间每天的记录?

期望的结果是这样的:

Table2 

Key    StartDate     EndDate       Name       Data_1    Day
1      2017-01-01    2017-01-03    Billy G    58uf      2017-01-01
1      2017-01-01    2017-01-03    Billy G    58uf      2017-01-02
1      2017-01-01    2017-01-03    Billy G    58uf      2017-01-03
2      2017-01-10    2017-01-12    S Dogg     4940      2017-01-10
2      2017-01-10    2017-01-12    S Dogg     4940      2017-01-11
2      2017-01-10    2017-01-12    S Dogg     4940      2017-01-12

这需要在SSIS包中完成。我认为简单的MERGE JOIN不会起作用,因为1)Date维度没有与Table1中的任何内容匹配的键,2)我需要它为BETWEEN StartDate和EndDate的每个日期添加一天

如果我执行执行SQL命令,那么如何从两个单独的表中获取它?

2 个答案:

答案 0 :(得分:0)

您可以使用查找来执行此操作。您的主要源组件将是日期维度,在查找中,您将获得Table1的行,其中日期维度的日期位于开始/结束范围内,并将这些列添加到数据流中。

答案 1 :(得分:0)

我通过使用一个简单的OLE DB源解决了这个问题,该源执行了我从stackoverflow上的另一篇文章中复制的SQL命令(见这里:SQL query to convert date ranges to per day records

基本上只是复制了那个,调整了表名,然后粘贴在Source属性

enter image description here