我有两个数据集。一个是维度表,其数据类似于以下示例
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命令,那么如何从两个单独的表中获取它?
答案 0 :(得分:0)
您可以使用查找来执行此操作。您的主要源组件将是日期维度,在查找中,您将获得Table1的行,其中日期维度的日期位于开始/结束范围内,并将这些列添加到数据流中。
答案 1 :(得分:0)
我通过使用一个简单的OLE DB源解决了这个问题,该源执行了我从stackoverflow上的另一篇文章中复制的SQL命令(见这里:SQL query to convert date ranges to per day records)
基本上只是复制了那个,调整了表名,然后粘贴在Source属性
中