Как рассчитать Row_Number в ETL-пакете в Integration Services
В интеграционных службах SQL-сервера не хватает полезной трансформации Row_Number. И встроенной функции, через которую можно было бы реализовать эту трансформацию, тоже нет. Так что, засучив рукава, придётся взяться за скрипты.
Решение очень простое и гибкое — у вас не будет с ним никаких проблем. Готовый пакет прикреплён (см. ниже).
В пакете демонстрируется два роунамбера:
- Простая расстановка номеров
- Расстановка номеров с секционированием
Ниже пошаговое решение.
Сначала сортируем строки в том порядке, в каком надо генерировать номера:
Отсортированный поток заводим в Script Transformation и создаём в нём дополнительную колонку для роунамбера:
Далее открываем редактор кода:
Далее добавляем в сгенерированный шаблон кода пару строк:
Всё.
Ранжирование с секционированием чуть посложнее. Надо чуть больше кода написать — вот так:
И поле с секцией надо подать на вход скрипта. Вот так:
0 комментариев