MAX Разделение в ETL с использованием SSIS - PullRequest
0 голосов
/ 19 февраля 2020

У меня есть запрос на SQL сервере, где я использую MAX OVER Partition BY.

MAX(Duration) OVER (PARTITION BY [Variable8] 
                    ORDER BY [RouterCallKeySequenceNumber] ASC) AS MaxDuration

Я хотел бы реализовать это в ETL с использованием служб SSIS.

Для реализации я попытался реализовать аналогично тому, как мы можем реализовать номер строки.

Я добавил преобразование SORT и отсортировал по Variable8 и RouterCallKeySequenceNumber, а затем добавил преобразование Script.

    string _variable8 = "";
    int _max_duration;

    public override void Input0_ProcessInputRow(Input0Buffer Row)
    {
        _max_duration = Row.Duration;

        if (Row.Variable8 != _variable8)
        {
            _max_duration = Row.Duration;
            Row.maxduration = _max_duration;

            _variable8 = Row.Variable8;
        }
        else
        {
            if (Row.Duration >= _max_duration)
            {
                Row.maxduration = _max_duration;
            }
        }
    }

Это данные, которые у меня есть -

Variable8   RouterCallKeySequenceNumber Duration
153084-2490 0                           265     
153084-2490 1                           161     
153084-2490 2                           197     

Мне нужно следующее решение:

Variable8   RouterCallKeySequenceNumber Duration    Max Duration
153084-2490 0                           265         265
153084-2490 1                           161         265
153084-2490 2                           197         265

Но это не возвращает желаемого значения.

Буду признателен, если вы сможете оказать какую-либо помощь.

Спасибо

...