我正在创建一个SSIS包,如果一个产品标签的产品代码重复,则需要通知用户。我们通过在共享位置发送给我们的csv平面文件来检索产品。
在此示例中,产品标签Physio Ormix和Nixen的Productcode = 1a。
因此,基本上productcode = 1a是重复的,因为productlabel = Nixen也使用了它。因此,通知用户所使用的重复的ProductCode和Productlabel。我尝试创建一个按ProductCode进行分组并对其进行计数的聚合。
有人可以给我提示如何做吗?
答案 0 :(得分:1)
我认为您可以使用脚本组件和条件拆分来获得重复项,而无需所有这些逻辑:
DT_BOOL
的输出列(示例名称为Flag
)在脚本组件内部编写一个类似的脚本:
using System.Collections.Generic;
public class ScriptMain:
UserComponent
{
List<string> lstKey = new List<string>;
List<string> lstKeylabel = new List<string>;
public override void Input0_ProcessInputRow(InputBuffer0 Row)
{
if(!lstKey.Contains(Row.ProductCode){
lstKey.Add(Row.ProductCode);
lstKeylabel.Add(Row.ProductCode + ";" + Row.ProductLabel);
Row.Flag = true;
}else if(lstKeylabel.Contains(Row.ProductCode + ";" + Row.ProductLabel)) {
Row.Flag = true;
}else{
Row.Flag = false;
}
}
}
在具有类似表达式的脚本组件之后添加条件拆分:
[Flag] == true
所有通过 true路径传递的记录都是唯一的,在 false路径中传递的所有行都是重复的。