我正在尝试使用SQL Select制作SSIS的纯文本。问题在于SSIS将文件像表一样,我需要特定格式。
例如,我有这个结果:
bill_id | concept |concept_type |amount |
-----------|------------|-------------|-------|
334455 |concept1 |product |12 |
334455 |concept2 |product |10,5 |
334455 |concept3 |service |45,8 |
334455 |concept4 |service |1,05 |
334455 |concept5 |service |12,5 |
334455 |concept6 |service |14,6 |
334455 |concept7 |service |108 |
我需要转换为这样的东西:
00 334455
19
10 concept1 12.00
20 concept2 10.50
17
10 concept3 45.80
20 concept4 1.05
30 concept5 12.50
40 concept6 14.60
50 concept7 108.00
21 total 204.45
所以,我有第一行,ID,这是第一列的值。00告诉该行是ID。接下来,我们有19个,告诉启动产品概念,然后是每个概念的行。与17相同,但与服务概念相同。最后21个是所有概念的总数。
我知道可以使用C#应用程序完成,但是我试图使用SSIS,以便我可以制作DTS文件。
有可能吗?我该怎么办?
谢谢
用于您的任务的几种方法:
- 如评论中所述,您可以在C#中编写一个脚本转换,并做任何您想做的事情。这是一种方法,尤其是对于复杂变换。
- 以纯SSIS的方式,您必须将任务分解到子任务上。IE。从SQL中提取数据,在 bill_id 的循环组中获取所有 bill_ids 的列表,并计算总计,查询SQL数据由 bill_id 和获取 concept_type 的列表,在 concept_type 上组织循环,查询SQL数据由 bill_id 和 concept_type ,做数据流使用行号脚本。然后将结果存储为记录集并在随后的循环中收集所有记录集。
你看到问题了吗?您的转换需要大量数据分组,并且可以在整个记录集中完成。当您进行流数据转换时,即线程分组时,SSIS会发光。
回到您的任务 - 我宁愿做SSIS和C#脚本任务。SSIS 执行SQL Task 获取您的结果集并将其存储在对象变量中,然后 script Task 从对象变量获取数据集,并使用LINQ等进行所有转换等。然后将结果存储至带有C#的文件。