logo Фёдор Самородов

Как рассчитать Row_Number в ETL-пакете в Integration Services

В ‎интеграционных‏ ‎службах ‎SQL-сервера ‎не ‎хватает ‎полезной‏ ‎трансформации ‎Row_Number.‏ ‎И‏ ‎встроенной ‎функции, ‎через‏ ‎которую ‎можно‏ ‎было ‎бы ‎реализовать ‎эту‏ ‎трансформацию,‏ ‎тоже ‎нет.‏ ‎Так ‎что,‏ ‎засучив ‎рукава, ‎придётся ‎взяться ‎за‏ ‎скрипты.

Решение‏ ‎очень ‎простое‏ ‎и ‎гибкое‏ ‎— ‎у ‎вас ‎не ‎будет‏ ‎с‏ ‎ним‏ ‎никаких ‎проблем.‏ ‎Готовый ‎пакет‏ ‎прикреплён ‎(см.‏ ‎ниже).

В‏ ‎пакете ‎демонстрируется‏ ‎два ‎роунамбера:

  1. Простая ‎расстановка ‎номеров
  2. Расстановка ‎номеров‏ ‎с ‎секционированием

Ниже‏ ‎пошаговое‏ ‎решение.

Сначала ‎сортируем ‎строки‏ ‎в ‎том‏ ‎порядке, ‎в ‎каком ‎надо‏ ‎генерировать‏ ‎номера:

Отсортированный ‎поток‏ ‎заводим ‎в‏ ‎Script ‎Transformation ‎и ‎создаём ‎в‏ ‎нём‏ ‎дополнительную ‎колонку‏ ‎для ‎роунамбера:

Далее‏ ‎открываем ‎редактор ‎кода:

Далее ‎добавляем ‎в‏ ‎сгенерированный‏ ‎шаблон‏ ‎кода ‎пару‏ ‎строк:

Всё.

Ранжирование ‎с‏ ‎секционированием ‎чуть‏ ‎посложнее.‏ ‎Надо ‎чуть‏ ‎больше ‎кода ‎написать ‎— ‎вот‏ ‎так:

И ‎поле‏ ‎с‏ ‎секцией ‎надо ‎подать‏ ‎на ‎вход‏ ‎скрипта. ‎Вот ‎так:


Предыдущий Следующий
Все посты проекта
0 комментариев

Подарить подписку

Будет создан код, который позволит адресату получить бесплатный для него доступ на определённый уровень подписки.

Оплата за этого пользователя будет списываться с вашей карты вплоть до отмены подписки. Код может быть показан на экране или отправлен по почте вместе с инструкцией.

Будет создан код, который позволит адресату получить сумму на баланс.

Разово будет списана указанная сумма и зачислена на баланс пользователя, воспользовавшегося данным промокодом.

Добавить карту
0/2048