合并服务(SSIS)中的列

时间:2012-12-21 19:33:16

标签: ssis foreach merge

在数据流中,我有一个ADO NET Source,可以加载这样的表:

PersonID, Email
1, "john@hotmail.com"
1, "john_job@yahoo.com"
2, "susan@gmail.com"
2, "sus2010@hotmail.com"

我需要合并每个人的电子邮件,并得到如下结果:

PersonID, EmailsArray
1, "john@hotmail.com,john_job@yahoo.com"
2, "susan@gmail.com,sus2010@hotmail.com"

我该怎么办?使用派生列?一个脚本组件?一个foreach循环? (在数据流中不存在)。提前谢谢。

1 个答案:

答案 0 :(得分:2)

使用类似以下逻辑的异步脚本组件:

  1. 在ID列上对数据进行排序。
  2. 在脚本组件中,声明一个跟踪前一个id的变量,将其分配给脚本末尾输入缓冲区的ID列。
  3. 对于输入缓冲区中的每一行,将电子邮件字段连接到字符串变量。
  4. 检查先前的ID是否等于当前ID(来自输入缓冲区)。如果不同,请使用先前的ID和连接的字符串向输出缓冲区添加一行。将字符串重置为空。
  5. MSDN