【问题标题】:How to get desired output in SSIS by grouping by and count?如何通过分组和计数在 SSIS 中获得所需的输出?
【发布时间】:2019-03-07 05:40:28
【问题描述】:

我正在创建一个 SSIS 包,如果一个产品标签的产品代码重复,则需要通知用户。我们通过在共享位置发送给我们的 csv 平面文件检索产品。

在本例中,我的产品标签 Physio Ormix 和 Nixen 的 Productcode = 1a。

所以基本上 productcode = 1a 是重复的,因为它也被 productlabel=Nixen 使用。因此,通知用户使用重复的 ProductCode 和 Productlabel。我尝试创建一个按 ProductCode 执行分组并对其进行计数的聚合。

有人可以给我一些提示吗?

【问题讨论】:

  • 看起来您的条件拆分可能是将重复项发送到电子邮件任务的地方。您想拆分文件中计数 > 1 的记录。
  • 只需将数据加载到临时(临时)表中并运行适当的 SQL 来标记来自 SSIS 的重复项,捕获其发现和处理。

标签: sql sql-server ssis ssis-2012 ssis-2008


【解决方案1】:

我认为您可以使用脚本组件和条件拆分来获取重复项,而无需所有这些逻辑:

  1. 在数据流任务中添加脚本组件
  2. 添加DT_BOOL 类型的输出列(示例名称为Flag
  3. 在脚本组件里面写一个类似的脚本:

    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;
    
            }
    
        }  
    
    }
    
  4. 在类似表达式的脚本组件后添加条件拆分:

    [Flag] == true
    
  5. 通过 true 路径 传递的所有记录都是唯一的,通过 false 路径 传递的所有行都是重复的。

【讨论】:

  • 你好@Hadi!非常感谢你的回复!我试过这个,但这与我之前所做的输出相同,它得到了重复的 1a Physio Ormix,而不是得到另一个产品标签使用的重复产品代码 - 1A nixen
  • @Chadwick 这种方法会将流拆分为唯一值并重复。为什么它不起作用?
  • 你好@Hadi!是的,先生,它确实将唯一值和重复值分开了。但在这种情况下,它不介意 1A Physio Ormix 有 5 行具有相同值。只要它仅对一个产品标签使用相同的产品代码。所以这里的问题是,我需要检索使用相同产品代码但具有不同产品标签(如 1A Nixen)的记录。
  • @Chadwick 可以通过添加另一个列表来解决。检查更新的脚本
  • @Hadi 先生!有没有搞错!它像魔术一样工作!非常感谢您的帮助!
猜你喜欢
  • 2016-04-09
  • 2020-12-28
  • 2013-10-16
  • 1970-01-01
  • 2021-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-05
相关资源
最近更新 更多