2017-03-16 85 views
1

我有两个数据集。一种是类似于下面的示例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)我需要它为每个日期添加Day BETWEEN StartDate和EndDate

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

+0

最后的记录从你期望的结果,为什么'EndDate'是“2017年1月11日”而不是“2017年1月12日”? – LONG

+0

对不起,这是一个错字 – james5

+0

如果没有共同的列(或键)加入,不能使用'合并加入',我会考虑另一种方法来做到这一点 – LONG

回答

0

你可以用Lookup来做到这一点。您的主要源组件将是日期维度,并且在查找中,您将获取Table1的行,其中日期维度的日期位于开始/结束范围内,并将这些列添加到数据流中。