【发布时间】:2017-10-11 18:46:18
【问题描述】:
我有这样的 .csv 文件:
+---------+--------+--------------------+---------+-----+----------+----------------+
| CLIENTE | CENTRO | MATERIAL | PERIODO | MES | UNIDADES | PLATAFORMA |
+---------+--------+--------------------+---------+-----+----------+----------------+
| 100013 | 2001 | 1A000-991801053303 | 2017 | 1 | 100 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 2 | 200 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 3 | 300 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 4 | 400 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 5 | 500 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 6 | 600 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 7 | 700 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 8 | 800 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 9 | 900 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 10 | 1000 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 11 | 1100 | F25 -( BMW X3) |
| 100013 | 2001 | 1A000-991801053303 | 2017 | 12 | 1200 | F25 -( BMW X3) |
+---------+--------+--------------------+---------+-----+----------+----------------+
我阅读它时使用平面文件源没有问题,最后发送到 ADO NET Destination。问题是我们的客户想要读取其他方式的寄存器。他们的 .csv 文件格式如下:
+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| CLIENTE | CENTRO | MATERIAL | PLATAFORMA | | 2017-1 | 2017-2 | 2017-3 | 2017-4 | 2017-5 | 2017-6 | 2017-7 | 2017-8 | 2017-9 | 2017-10 | 2017-11 | 2017-12 |
+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | 100 | 200 | 300 | 400 | 500 | 600 | 700 | 800 | 900 | 1000 | 1100 | 1200 |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
| 100013 | 2001 | 1A000-991801053303 | F25 -( BMW X3) | | | | | | | | | | | | | |
+---------+--------+--------------------+----------------+--+----------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+---------+
所以第 5 列的第一个寄存器:2017-10 和 100 对应另外 4 列的第一行 2017-11 和 200 到第二行,依此类推...
如您所见,前 4 列相同,但第 5 列不同。他们合并列PERIODO 和MES,在它下面我们有列UNIDADES。我想要的是如何将其格式化为 .csv 并格式化为第一个。
总之,我想将第二个 .csv 文件转换为第一个
我读到我可以使用 PIVOT 来实现它。但我真的不明白如何使用它。我搜索了有关它的教程,但没有找到任何我想做的类似的东西。
实际 SSIS 包:
【问题讨论】:
-
您可以使用 SQL Server Pivot 关系运算符将行转换为列。而不是使用 SSIS 执行此任务,而是使用 SQL。