Главная » Microsoft SQL Server, Базы данных » Элементы пакетов службы интеграции – ЧАСТЬ 6

0

Преобразования

Находясь между источником и приемником, элементы преобразования обеспечивают трансформацию данных из того, что было прочитано из источника, в то, что на самом деле необходимо. Любая трансформация требует на входе один или несколько потоков данных и обеспечивает на выходе информацией один или несколько приемников или других элементов преобразований. Подобно источникам и приемникам, многие преобразования реализуют некоторый метод конфигурирования потока строк, преобразование которых завершилось ошибкой. Многие элементы преобразования обеспечены стандартными и расширенными редакторами, позволяющими конфигурировать компонент, при этом в базовом редакторе доступны обычные конфигурации.

Стандартные преобразования, доступные в задании потока данных, описаны ниже.

?               Aggregate. Подобно предложению GROUP BY в языке SQL, позволяет генерировать максимальное, минимальное, среднее и другие итоговые значения из потока данных. Ввиду своей природы преобразование Aggregate не внедряется в поток, а дает результат в виде консолидированных строк. Работа с этим элементом начинается во вкладке Aggregations, где выбираются консолидируемые столбцы. Если необходимо включить нескольких копий одного и того же столбца, нужно щелкнуть на нем несколько раз на нижней панели. Затем для каждого из выбранных столбцов задается выходное имя (Output Alias), выполняемая операция (например, Group by, Count и т.п.) и любые флаги сравнения (например, Ignore case). Для разных столбцов могут задаваться разные параметры производительности в виде либо точных (Distinct Count Keys), либо приблизительных чисел (Distinct Count Scale). Эти значения подсчитывают количество различных (т.е. уникальных) преобразуемых значений. Предполагается несколько диапазонов.

•                Low. Приблизительно 500 тысяч значений.

•                Medium. Приблизительно 5 миллионов значений.

•                High. Примерно 25 миллионов значений.

Аналогичные параметры могут быть заданы и для столбцов, по которым выполняется группировка (Group by). Для этого следует развернуть раздел Advanced вкладки Aggregations и ввести точное (Keys) или приблизительное (Keys Scale) число различных значений, подвергающихся обработке. В качестве альтернативы ключи производительности могут быть заданы во вкладке Advanced для всего компонента, включая объем выделяемой расширенной памяти, если такая потребуется.

?               Audit. Добавляет в поток данных столбцы контекста выполнения, позволяя записывать информацию аудита (откуда и когда поступила информация) непосредственно в данные. Доступны следующие столбцы: PackageName, VersionID, ExecutionstartTime,

MachineName, UserName, TaskName и Taskld.

Character Map. Позволяет строкам потока данных быть преобразованными с помощью целого ряда операций: Byte reversal, Full width, Half width. Hira- gana, Katakana, Linguistic casting, Lowercase. Simplifyed Chineese и Uppercase. В редакторе выберите столбец, подлежащий преобразованию, добавляя его с помощью нижней панели необходимое число раз. Далее для каждого столбца указывается пункт назначения: новый столбец (New column) или замена текущего столбца (Inplace change). После этого выберите операцию для изменяемого столбца.

Conditional Split. Позволяет строкам потока данных разделяться между различными результатами в зависимости от их содержимого. Элемент конфигурируется путем ввода выражений и результирующих имен в редакторе. Когда этот элемент преобразования получает строку, каждое из выражений вычисляется по порядку, и первое из них, которое окажется истинным, получит строку данных. Если ни одно из выражений не окажется истинным, то эту строку получит результат, назначенный по умолчанию (его имя вводится в нижней части редактора). После конфигурирования при подключении потока данных открывается всплывающее окно выбора выходного потока, в котором пользователю придется произвести выбор. Не отображенные результаты игнорируются, что может привести к потере данных.

Copy Column. Добавление в поток данных копии существующего столбца. В редакторе выберите копируемые столбцы, добавляя по мере необходимости несколько копий с помощью нижней панели. Каждому новому столбцу впоследствии следует присвоить соответствующее имя (Output Alias).

Data Conversion. Добавление в поток данных копии столбца с преобразованием типа данных (при необходимости). В редакторе выберите преобразуемые столбцы, создавая по мере надобности несколько их копий. Каждому новому столбцу необходимо присвоить соответствующее имя и тип данных: при этом преобразования кодовых страниц не допускаются. При использовании расширенного редактора можно активизировать независимый от региональных настроек алгоритм ускоренного разбора строк. Для этого нужно установить для параметра Fast Parse значение true.

Data Mining Query. Запускает запрос DMX для каждой строки потока данных, позволяя строкам быть ассоциированными с предсказаниями (например, определение вероятности того, что новый заказчик совершит покупку). Конфигурирование выполняется путем выбора диспетчера подключений Analysis Services, структуры раскрытия данных и модели раскрытия, к которой будет выполняться запрос. Во вкладке Query щелкните на кнопке Build New Query и отобразите столбцы потока данных на столбцы модели (по умолчанию отображение основывается на именах столбцов). Затем в нижней части панели выберите столбцы, добавляемые в поток, и присвойте выходному потоку подходящее имя (Alias).

Derived Column. Использование выражений для генерирования значений, которые могут быть либо добавлены в поток данных, либо заменить значения в существующих столбцах. В редакторе спроектируйте выражения службы интеграции, при необходимости используя преобразования типов данных. Определите, будут ли новые значения замещать существующие столбцы или формировать новый столбец. Присвойте новому столбцу подходящее имя и тип данных.

Export Column. Запись особо больших типов данных (DT_TEXT, DT_NTEXT или DT_ IMAGE) в файл, определяемый именем, содержащемся в потоке данных. Например, большие текстовые объекты могут извлекаться в разные файлы для включения в Web- сайт или индексации. В редакторе выберите по два столбца для каждого определяемого извлечения: столбец с крупными данными и столбец, содержащий имя файла. Один файл может получить любое количество объектов — для определения режима помещения данных в файлы определите параметр Append/Truncate/Exists.

Fuzzy Grouping. Идентификация дублирующихся строк в потоке данных с использованием точного сравнения для любых типов данных и нечеткого сравнения для строковых данных типов DT_STR и DT_WSTR. Данное задание конфигурируется с указанием ключевых столбцов потока данных, на основе которых определяется уникальность. В качестве результата этого преобразования в выходной поток может быть добавлено несколько столбцов.

•                Входной ключ (имя по умолчанию — _key_in). Последовательный номер, предназначенный для идентификации каждой входящей строки.

•                Выходной ключ (имя по умолчанию — _key_out). Ключ _key_in строки, с которой данная строка совпадает, или ее собственный ключ _key_in, если совпадений не найдено. Одним из способов исключения из потока данных дублирующихся строк является связывание этого компонента с элементом Conditional Split, в котором задано условие [_key_in] == [key_out].

•                Мера подобия (имя по умолчанию — name_score). Мера подобия всей строки (в диапазоне от нуля до единицы) первой строке множества дубликатов.

•                Групповой вывод (имя по умолчанию— <столбец>_clean). Для каждого выбранного ключевого столбца это значение из первой строки набора дубликатов (т.е. значение из строки, на которую указывает ключ _key_out).

•                Сходный вывод (имя по умолчанию — Similarity_<столбец>). Для каждого выбранного ключевого столбца это его мера подобия по отношению к первой строке набора дубликатов.

В редакторе выберите диспетчер подключений OLE DB, где преобразование будет иметь разрешения на создание временной таблицы. После этого сконфигурируйте все ключевые столбцы, назначая им имена обычного, группового и сходного вывода. В дополнение для каждого столбца определите следующие параметры.

•                Match Туре. Для каждого строкового столбца выберите между точным (Exact) и нечетким (Fuzzy) сравнением. (Для столбцов других типов всегда используется точное сравнение.)

•                Minimum Similarity. Наименьшая мера подобия, допустимая для принятия решения о соответствии строк. Если в столбцах, в которых выполняется нечеткое сравнение, оставить значение 0 (нуль), подобие будет управляться ползунком во вкладке Advanced редактора.

•                Numerals. Определите, должны ли предваряющие и замыкающие нули и пробелы приниматься во внимание при сравнении. Принятое по умолчание значение Neither предполагает, что это не так.

•                Comparison Flags. Выберите установки, соответствующие типу сравниваемых строк.

Fuzzy Lookup. Аналогично преобразованию Lookup, за исключением случая, когда четкий поиск завершается неудачей, нечеткий будет пытаться выполнить поиск во всех строковых столбцах (DT_STR и DT_WSTR). Определите диспетчер подключений OLE DB и имя таблицы, в которой будет выполняться поиск, а также новый или существующий индекс, который будет использован для кэширования информации о нечетком поиске. Во вкладке Columns определите отношения между потоком данных и таблицей, на которую сделана ссылка, а также то, какие столбцы таблицы будут добавляться в поток данных. Во вкладке Advanced выберите меру подобия, по достижении которой будет приниматься решение о соответствии. Чем меньше это число, тем более либеральным будет поиск. В дополнение к заданным столбцам будут добавляться следующие метаданные.

•                „Similarity. Отчет о подобии всех сравниваемых значений.

•                „Confidence. Отчет об уровне правдоподобия того, что выбранное соответствие является корректным, в сравнении с остальными возможными соответствиями в таблице классификаторов.

•                „Similarity_<имя_столбца>. Подобие каждого отдельного столбца.

Расширенный редактор позволяет дополнительно установить для каждого столбца параметры MinimumSimilarity и FuzzuComparisonFlags.

Import Column. Чтение объектов крупных типов данных (DT_TEXT, DT_NTEXT и DT_IMAGE) из файла, определяемого именем, содержащимся в потоке данных, с добавлением текста или изображений в новый столбец потока данных. Этот элемент конфигурируется в расширенном редакторе. При этом во вкладке Input Columns идентифицируется столбец, содержащий имена файлов. После этого во вкладке Input and Output Properties создается новый выходной столбец для каждого столбца имен файлов, в который будут заноситься все прочитанные данные. Присвойте новым столбцам соответствующие имена и типы данных. Запомните в свойствах столбца недоступный параметр ГО и найдите параметры соответствующего входного столбца с именем файлов. Установите значение параметра FileDataColumnID входного столбца в значение идентификатора ID выходного столбца, чтобы связать воедино столбцы имени файла и содержимого. Также установите для свойства ExpectBOM значение true для всех данных с типом DT_NTEXT, подлежащих считыванию, которые записывались с маркерами порядка байтов.

Lookup. Поиск строк в таблице базы данных, совпадающих с потоком данных, и включение ее избранных столбцов в поток — нечто вроде объединения между потоком данных и таблицей. Например, идентификатор товара может быть добавлен в поток с помощью выполнения поиска в классификаторе товаров по названию. Идентифицируйте диспетчер подключений OLE DB и ссылку на таблицу, представление или запрос, которые будут участвовать в поиске. Во вкладке Columns установите соответствия между столбцами потока данных и таблицы классификаторов, перетаскивая линии между соответствующими элементами. После этого выберите столбцы таблицы классификаторов, которые должны быть добавлены в поток данных, изменяя при необходимости на нижней панели их имена.

Во вкладке Advanced вы можете оптимизировать производительность памяти преобразования Lookup. По умолчанию вся таблица классификаторов считывается в память в начале преобразования для минимизации операций ввода-вывода, что на практике может отнимать достаточно много времени при работе с большими таблицами. Установите флажок Enable Memory Restrictions, чтобы кэшировать только часть таблицы, а затем установите размер кэша, подходящий для того количества строк, которые вы хотите загружать в одном пакете. Если для набора данных более эффективна другая форма, можно также модифицировать инструкцию SQL.

Merge. Комбинирует строки двух отсортированных потоков данных в единый поток. Например, если некоторый поток строк разделен ошибочными строками или компонентом преобразования Conditional Split, его можно снова соединить. В обоих вышестоящих потоках должна быть выполнена сортировка по одним и тем же ключе-

вым столбцам, а типы данных сливаемых столбцов должны быть совместимы. Конфигурация выполняется с помощью перетаскивания двух разных входов к элементу слияния и отображения столбцов в редакторе. Комбинирование неотсортированных потоков данных выполняется элементом Union All.

?               Merge Join. Реализует функциональность оператора JOIN языка SQL для потоков данных, отсортированных по столбцам объединения. Конфигурирование выполняется перетаскиванием входов к элементу, однако при этом следует уделять внимание тому, какой из входов находится слева, а какой справа (этот будет существенно для внешних объединений). Выбор типа объединения выполняется в редакторе. Там же следует установить отображения объединяемых столбцов и выбрать столбцы, которые будут направлены на выход.

?               Multicast. Копирование всех строк входного потока данных во множество выходных. Как только один из выходов подключается к некоторому компоненту, тут же появляется следующий выход, доступный для подключения. Конфигурируются только имена выходов.

?               OLE DB Command. Выполнение инструкции SQL (типа UPDATE или DELETE) для всех строк потока данных. Конфигурирование выполняется определением диспетчера подключения OLE DB. Далее следует перейти к вкладке Component Properties и ввести инструкцию SQL, используя символы вопросительных знаков для параметров (например, UPDATE MyTable SET Coll = ? WHERE Со12 = ?). Во вкладке Column Mappings ассоциируйте столбцы потока данных с параметрами инструкции SQL.

?               Percentage Sampling. Разделение строк потока данных случайным образом на основе введенного процентного соотношения плотности выходных потоков. Например, этот элемент может использоваться для разделения потока на множества для обучения и тестирования элемента раскрытия данных. В редакторе укажите приблизительный процент для выхода Selected— остальные строки будут направлены на выход Unselected. Если на вход подается один и тот же поток данных, то данное преобразование отберет один и тот же набор строк.

?               Pivot. Денормализация потока данных, аналогично тому, как работают перекрестные (сводные) таблицы программы Excel, перенося значения атрибутов в столбцы. Например, поток данных с тремя столбцами, Quarter (квартал), Region (регион) и Revenue (доход), можно развернуть так, что столбцами окажутся Quarter, Western Region (западный регион) и Eastern Region (восточный регион), т.е. поток будет развернут по регионам.

?               Row Count. Подсчет количества строк в потоке данных и помещение результата в переменную. Конфигурируется путем заполнения поля имени переменной (VariableName).

?               Row Sampling. Этот элемент практически идентичен преобразованию Percentage Sampling, за исключение того, что вводится количество строк, которые должны попасть в выборку, а не их процент.

?               Script. Перетащите компонент сценария в рабочую область конструктора, выбрав в открывшемся диалоговогом окне тип компонента Transformation. В редакторе выделите те столбцы, которые будут доступны в сценарии, при этом разделяя их на доступные только для чтения (Readonly) и доступные для чтения и записи (ReadWrite). Во вкладке Inputs and Outputs добавьте столбцы выхода, которые будут заполняться сценарием, выше и ниже входных столбцов.

На странице редактора Script укажите переменные, доступные для чтения, а также для чтения и записи в сценарии, разделив их запятыми в параметрах ReadOnlyVariables

и ReadWriteVariables соответственно. Оставьте для параметра PreCornpiie значение true, как предложено по умолчанию, если, естественно, вас не тревожит размер пакета на диске. Щелкните на кнопке Script, чтобы раскрыть сам программный код. Заметим, что первичный метод замещает метод <имя_входа> __Process Input Row. как показано в следующем примере:

Public Class ScriptMain

Inherits UserComponent

Public Overrides Sub Input0_ProcessInputRow(ByVal Row As InputOBuffer)

‘Система источника отмечает отсутствие дат, вставляя старые даты If Row.TransactionDate < #1/1/2000# Then Row.TransactionDate_IsNull = True Row.PrimeTimeFlag_IsNull = True Else

‘Установка флага выполнения транзакции в рабочее время If Weekday(Row.TransactionDate) > 0 _

And Weekday(Row.TransactionDate) < 6 _

And Row.TransactionDate.Hour > 7 _

And Row.TransactionDate.Hour < 19 Then Row.PrimeTimeFlag = True Else

Row.PrimeTimeFlag = False End If End If End Sub End Class

В этом примере используется один вход, доступный для чтения и записи (TransactionDate), и один выход (PrimeTimeFlag), а имя входа оставлено, как принято по умолчанию (Input 0). Каждый столбец представляется как свойство объекта Row и дополняется суффиксом _IsNull для тестирования и установки пустого значения. Эта процедура вызывается для каждой строки потока данных.

Slowly Changing Dimension. Сравнение данных в потоке с таблицей измерений и формирование измерения на основе ролей, назначенных конкретным столбцам. Этот компонент необычен тем, что не имеет редактора. Вместо него запускается мастер, позволяющий последовательно определить роли столбцов и взаимодействие с таблицей измерений. В результате выполнения мастера множество компонентов будет помещено в рабочую область конструктора для выполнения задачи обслуживания измерения.

Sort. Сортировка строк потока данных по выбранным столбцам. Конфигурация осуществляется выбором соответствующих строк. После этого на нижней панели выберите тип сортировки, ее порядок и установите флажки, соответствующие сортируемым данным.

Term Extraction. Создание нового потока данных, основанного на терминах, найденных в текстовом столбце с кодировкой Unicode (с типом данных DT_WSTR или DT_ NTEXT). Такой поток применяется при раскрытии данных, когда строки конкретного типа используются для генерации списка часто используемых терминов. Впоследствии эти термины могут использоваться в компоненте Term Lookup для идентификации сходных строк. Например, текст сохраненного документа RSS может быть использован для поиска сходных документов в большом наборе. Для конфигурирования следует выбрать столбец, содержащий текст с кодировкой Unicode. Если создан список исключаемых терминов, идентифицируйте соответствующие таблицу и столбец во вкладке Exclusions. Вкладка Advanced управляет алгоритмом извлечения; среди прочего

определяется, должно ли слово быть одиночным или находиться в составе фразы (артикли, местоимения и прочие служебные части речи никогда не включаются), алгоритм подсчета, минимальная частота, необходимая для извлечения, и максимальная длина фразы.

?               Term Lookup. Выполнение своеобразного объединения столбца потока данных с текстом Unicode с таблицей терминов, созданной компонентом Term Extraction. Для каждого совпадающего термина создается строка в выходном потоке данных. Выходной поток также содержит два дополнительных столбца: Term и Frequency. В первом из них содержится шаблон из таблицы сопоставления, а во втором — количество вхождений данного шаблона в строку столбца потока данных. Это преобразование конфигурируется определением диспетчера подключений OLE DB и таблицы, содержащей список терминов. Во вкладке Term Lookup выбираются входные столбцы, проходящие через компонент для формирования выходного потока. После этого на верхней панели определяется соответствие между столбцом входного потока и столбцом Term таблицы терминов.

?               Union All. Этот компонент комбинирует несколько входных потоков данных в единый выходной; при этом требуется совместимость типов соответствующих столбцов. Конфигурирование осуществляется с помощью подключения всех входных потоков, участвующих в формировании выходного. После этого выполняется отображение столбцов каждого из входящих потоков на столбцы выходного.

?               Unpivot. Нормализация потока данных с помощью преобразования столбцов в значения атрибутов. Например, поток данных с одной строкой для каждого квартала и столбцами объема доходов по каждому из регионов может быть преобразован в выходной поток с тремя столбцами: номера квартала, региона и объема доходов.

Источник: Нильсен, Пол. Microsoft SQL Server 2005. Библия пользователя. : Пер. с англ. — М. : ООО “И.Д. Вильямс”, 2008. — 1232 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии