Как отсортировать данные для преобразований «Слияние» и «Соединение слиянием»
В службах Integration Services для преобразований «Слияние» и «Соединение слиянием» необходимы отсортированные входные данные. Входные данные должны быть отсортированы физически, а параметры сортировки должны быть установлены на выходы и выходные столбцы источника или вышестоящего преобразования. Если параметры сортировки определяют, что данные отсортированы, но данные в действительности не отсортированы, операция слияния или соединения слиянием может дать непредвиденные результаты.
Сортировка данных
Сортировку данных можно выполнить одним из следующих способов.
В источнике — в инструкции, с помощью которой загружаются данные, — использовать предложение ORDER BY.
В потоке данных преобразование «Сортировка» должно предшествовать преобразованию «Слияние» или «Соединение слиянием».
Если данные являются строковыми, то и преобразование «Слияние», и преобразование «Соединение слиянием» ожидают, что строковые значения отсортированы с использованием параметров сортировки Windows. Чтобы строковые значения передавались преобразованиям «Слияние» и «Соединение слиянием», отсортированным с помощью параметров сортировки Windows, примените следующую процедуру.
Чтобы передавались строковые значения, отсортированные с помощью параметров сортировки Windows
Используйте преобразование «Сортировка» для сортировки данных.
Преобразование «Сортировка» использует параметры сортировки Windows для упорядочивания строковых значений.
— или —
Используйте оператор языка Transact-SQL CAST для преобразования значений varchar в значения nvarchar, а затем с помощью предложения языка Transact-SQL ORDER BY отсортируйте эти данные.
Важно! Нельзя использовать одно предложение ORDER BY, поскольку для сортировки строковых значений оно использует параметры сортировки SQL Server. Применение параметров сортировки SQL Server, которые отличаются от параметров сортировки Windows порядком сортировки, может привести к тому, что преобразование «Слияние» или «Соединение слиянием» сформирует непредвиденные результаты.
Настройка параметров сортировки данных
Есть два важных свойства сортировки, которые необходимо задать для источника или вышестоящего преобразования, которые предоставляют данные для преобразования «Слияние» или «Соединение слиянием».
Свойство IsSorted выхода показывает, были ли данные отсортированы. Это свойство должно иметь значение True.
Важно! Установка свойства IsSorted в значение True не приводит к сортировке данных. Это свойство только подсказывает компонентам нисходящего потока, что данные раньше были отсортированы.
Свойство SortKeyPosition выходных столбцов показывает, отсортирован ли столбец, порядок сортировки и последовательность, в которой сортируется несколько столбцов. Это свойство должно быть задано для каждого столбца отсортированных данных.
При сортировке данных с помощью преобразования «Сортировка» это преобразование задает оба свойства требуемым образом для преобразования «Слияние» или «Соединение слиянием». То есть преобразование «Сортировка» задает для свойства IsSorted своего выхода значение True и задает свойство SortKeyPosition своих выходных столбцов.
Однако если не отсортировать данные с помощью преобразования «Сортировка», то придется задавать эти свойства вручную на источнике или в вышестоящем преобразовании. С помощью следующей процедуры можно вручную настроить эти свойства на источнике или в вышестоящем преобразовании.
Задание атрибутов сортировки вручную на источнике или в компоненте преобразования
В среде Business Intelligence Development Studio откройте проект служб Integration Services, содержащий необходимый пакет.
Чтобы открыть пакет, дважды щелкните его в обозревателе решений.
Найдите на вкладке Поток данных соответствующий источник или вышестоящее преобразование или перетащите его из области элементов в область конструктора.
Щелкните компонент правой кнопкой мыши и выберите пункт Показать расширенный редактор.
Перейдите на вкладку Свойства входов и выходов.
Выберите Выход <имя компонента> и установите для свойства IsSorted значение True.
Примечание Если пользователь вручную задаст для свойства IsSorted выходных данных значение True, а данные не сортированы, то при выполнении пакета в последующих преобразованиях «Соединение слиянием» и «Слияние» могут возникнуть отсутствующие или недопустимые сравнения данных.
Разверните элемент Выходные столбцы.
Щелкните столбец, который необходимо обозначить как отсортированный, и установите для его свойства SortKeyPosition отличное от нуля целое число, следуя следующим правилам.
Целое число должно представлять числовую последовательность начиная с 1 с добавлением по единице.
Положительные целые значения соответствуют возрастающему порядку сортировки.
Отрицательные целые значения соответствуют убывающему порядку сортировки. Если задано отрицательное целое число, положение столбца в последовательности сортировки будет определять абсолютное значение этого числа.
Значение 0 указывает на то, что столбец не отсортирован. Чтобы выходные столбцы не участвовали в сортировке, задайте значение 0.
В качестве примера настройки свойства SortKeyPosition рассмотрите приведенную ниже инструкцию Transact-SQL, которая загружает данные в источник.
SELECT * FROM MyTable ORDER BY ColumnA, ColumnB DESC, ColumnC
В этой инструкции свойство SortKeyPosition задается для каждого столбца следующим образом.
Установите свойство SortKeyPosition столбца ColumnA в значение 1. Это показывает, что столбец ColumnA является первым при сортировке, а сортировка производится по возрастанию.
Установите свойство SortKeyPosition столбца ColumnB в значение -2. Это показывает, что столбец ColumnB является вторым при сортировке, а сортировка производится по убыванию.
Установите свойство SortKeyPosition столбца ColumnC в значение 3. Это показывает, что столбец ColumnC является третьим при сортировке, а сортировка производится по возрастанию.
Повторите шаг 8 для каждого отсортированного столбца.
Нажмите ОК.
Чтобы сохранить обновленные пакеты, выберите в меню Файл пункт Сохранить выбранные элементы.
См. также