Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ssis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在集成服务(SSIS)中合并列_Ssis_Foreach_Merge - Fatal编程技术网

在集成服务(SSIS)中合并列

在集成服务(SSIS)中合并列,ssis,foreach,merge,Ssis,Foreach,Merge,在数据流中,我有一个ADO NET源,它加载如下表: 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" 我需要合并每个人的

在数据流中,我有一个ADO NET源,它加载如下表:

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"
我需要合并每个人的电子邮件,得到如下结果:

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循环?(数据流中不存在)。提前感谢。

使用具有以下逻辑的异步脚本组件:

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

  • 希望根据特定字段的聚合创建分隔列表?您的ADO.NET源代码查询所针对的是什么?我们必须在SSIS中这样做,还是可以接受的答案是提供一个进行聚合的源查询?您要处理多少数据?我的第一反应是编写一个函数并使用数据流(如果您真的需要使用SSIS)将其拉入,但函数可能会很慢……这是一个虚构的例子,我需要做类似的事情,但使用SSIS,而不是sql查询(使用sql游标很容易)。我不会建议游标作为TSQL解决方案,除非在非常特殊的情况下。这不会被归类为其中之一。好吧,无论如何,我正在搜索一个使用SSIS组件的解决方案,没有sql。