如何通过分组和计数在 SSIS 中获得所需的输出?
How to get desired output in SSIS by grouping by and count?
我正在创建一个 SSIS 包,如果一个产品标签有重复的产品代码,则需要通知用户。我们通过在共享位置发送给我们的 csv 平面文件检索产品。
在这个例子中,我的产品标签 Physio Ormix 和 Nixen 的 Productcode = 1a。
所以基本上 productcode = 1a 是重复的,因为它也被 productlabel=Nixen 使用。因此,通知用户使用了重复的 ProductCode 和 Productlabel。我尝试创建一个按 ProductCode 执行分组并对其进行计数的聚合。
有人可以告诉我如何操作吗?
我认为您可以使用脚本组件和条件拆分来获取重复项,而无需所有这些逻辑:
- 在数据流任务中添加脚本组件
- 添加类型为
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
通过真实路径传递的所有记录都是唯一的,在假路径中传递的所有行都是重复项。
我正在创建一个 SSIS 包,如果一个产品标签有重复的产品代码,则需要通知用户。我们通过在共享位置发送给我们的 csv 平面文件检索产品。
在这个例子中,我的产品标签 Physio Ormix 和 Nixen 的 Productcode = 1a。
所以基本上 productcode = 1a 是重复的,因为它也被 productlabel=Nixen 使用。因此,通知用户使用了重复的 ProductCode 和 Productlabel。我尝试创建一个按 ProductCode 执行分组并对其进行计数的聚合。
有人可以告诉我如何操作吗?
我认为您可以使用脚本组件和条件拆分来获取重复项,而无需所有这些逻辑:
- 在数据流任务中添加脚本组件
- 添加类型为
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
通过真实路径传递的所有记录都是唯一的,在假路径中传递的所有行都是重复项。