我正在尝试使用布局转换文件,如下所示:
id1 | id2 | id3 |...| id34 | A | B | C | A | B | C | A | B | C | 100 group of A B C|
a1 | b1 | c1 |...| aa1 | 3 | 7 | 5 | 7 | 5 | 3 | 1 | 1 | 1 | ... |
a2 | b2 | c2 |...| aa2 | 4 | 3 | 7 | 0 | 4 | 8 | 9 | 8 | 4 | ... |
输出应为:
id1 | id2 | id3 |...| id34 | A | B | C |
a1 | b1 | c1 |...| aa1 | 3 | 7 | 5 |
a1 | b1 | c1 |...| aa1 | 7 | 5 | 3 |
a1 | b1 | c1 |...| aa1 | 1 | 1 | 1 |
a2 | b2 | c2 |...| aa1 | 4 | 3 | 7 |
a2 | b2 | c2 |...| aa1 | 0 | 4 | 8 |
a2 | b2 | c2 |...| aa1 | 9 | 8 | 4 |
我目前正在通过脚本转换组件来完成它 但它很慢。
我对Pivot和Unpivot组件不是很熟悉
是否有任何可以设置行组| A | B | C |
的选项
和SSIS会将它视为一组并以我想要的格式转换它?
感谢提前!!
答案 0 :(得分:1)
我首先加载文件"按原样#34;进入一个宽的SQL表。我会为列组编号,例如
id1 | id2 | id3 |...| id34 | A | B | C | A | B | C | A | B | C | ...|
a1 | b1 | c1 |...| aa1 | 3 | 7 | 5 | 7 | 5 | 3 | 1 | 1 | 1 | ... |
...加载到列中......
id1 | id2 | id3 |...| id34 | A1 | B1 | C1 | A2 | B2 | C2 | A3 | B3 | C3 | ...
a1 | b1 | c1 |...| aa1 | 3 | 7 | 5 | 7 | 5 | 3 | 1 | 1 | 1 | ... |
然后我将创建一个Variable(String)来保存动态SQL语句,由另一个Variable(Int)驱动。我将创建一个For Each循环以将Int变量从1递增到100.在循环中我将使用字符串变量来驱动数据源。
第一次迭代,SQL看起来像:
SELECT id1, id2, id3 ... id34, A1 AS A, B1 AS B, C1 AS C
FROM Staging_Table
第二次迭代,SQL看起来像这样:
SELECT id1, id2, id3 ... id34, A2 AS A, B2 AS B, C2 AS C
FROM Staging_Table
......等等。
每次迭代的输出将通过OLE DB目标进入目标表。