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

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

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

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

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

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

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

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

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

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

Всё.

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

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


Бесплатный
Комментарии
avatar
Здесь будут комментарии к публикации