Как получить желаемый результат в SSIS, сгруппировав и посчитав? - PullRequest
3 голосов
/ 07 марта 2019

Я создаю пакет служб SSIS, в котором пользователю необходимо уведомить, если для одного ярлыка продукта есть дублированный код продукта. Мы получаем продукты с помощью простого файла CSV, отправляемого нам в общедоступном месте.

В этом примере у меня есть Productcode = 1a для метки продукта Physio Ormix и Nixen.

Так что в основном код продукта = 1a был дубликатом, потому что он также использовался productlabel = Nixen. Следовательно, уведомляйте пользователей об использованных дубликатах ProductCode и Productlabel. Я попытался создать агрегат, который выполняет группирование по ProductCode и считает его.

In this link is the image of my dataflow

Может кто-нибудь дать мне советы, как это сделать?

In this link is the desired output

1 Ответ

1 голос
/ 09 марта 2019

Я думаю, что вы можете использовать компонент сценария и условное разбиение, чтобы получить дубликаты без всей этой логики:

  1. Внутри задачи потока данных добавьте компонент Script
  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. Все записи, которые передаются по истинному пути , являются уникальными, все строки, переданные по ложному пути , являются дубликатами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...