logo
SQL2008_Administration

9.6.4. Преобразования Data Flow Task

Преобразования — это элементы задачи Data Flow Task, которые предназначены для выполнения каких-либо действий с данными в ходе перемещения их с источника в место назначения.

Работа со всеми преобразованиями выглядит одинаково:

  1. Необходимо перетащить элемент преобразования из раздела Transformations в Toolbox на свободное место в SSIS Designer (на вкладке Data Flow),

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

  3. Настроить свойства данного преобразования, указывая только те столбцы, с которыми действительно производятся какие-то преобразования.

В Data Flow Task предусмотрено 28 типов преобразований.

Тип преобразования

Описание

Aggregate (Агрегат) 

предназначено для расчета итоговых значений по столбцам перекачиваемых записей. Это преобразование скачивает все записи в ОП и считает по ним итоги.

Audit (Аудит) 

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

Character Map (Карта символов) 

это преобразование позволяет применить к значениям, получаемым с источника, строковые функции (например, перевод в верхний). Для каждого столбца в свойствах этого преобразования можно указать два назначения: In-place upgrade (то есть меняться будет значения того же столбца) и New column (результаты преобразования будут помещены в новый столбец).

Copy Column (Копирование столбца)

используется для "размножения" существующего столбеца, сделав из него два.

Conditional Split (Условное разделение)

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

Data Conversion (Преобразование типов данных) 

позволяет в процессе перекачки данных изменить тип данных. Это преобразование добавляет к исходным столбцам новые, которые можно использовать в назначении.

Data Mining Query (Запрос к модели добычи данных) 

позволяет для каждой записи на источнике выполнить запрос на языке DMX к модели добычи данных на Analysis Services. При этом значения из источника можно использовать как параметры, передаваемые этому запросу.

Derived Column (Производные столбцы) 

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

Export Column (Экспортировать столбец)

для этого преобразования необходимы два столбца: с данными BLOB и обычными строковыми значениями. В столбце со строковыми значениями должны находится имена файлов. Это преобразование запишет двоичные данные для каждой записи в файл на диске с именем, которому будет соответствовать название текстового столбца. Наиболее очевидное применение этого преобразования — экспорт изображений из базы данных в файлы на диске

Import Column (Импортировать столбец) 

предназначено для обратной задачи: импорта двоичных данных из файлов на диске в базу данных. В столбце источника должны быть указаны имена файлов с путями. Для каждой записи источника будет открываться соответствующий файл и записываться в столбец назначения

Fuzzy Grouping (Нечеткая группировка) 

В этом преобразовании используются элементы искусственного интеллекта для группировки записей на источнике. В свойствах этого преобразования вам нужно будет выбрать столбец (или несколько столбцов) источника, для которого будет производиться группировка, допустимые строковые преобразования и уровень "похожести" для группировки (от 0,00 до 0,99). Записи на источнике останутся в неприкосновенности, но для назначения можно будет использовать три дополнительных столбца: _key_in — уникальный идентификатор записи источника; _key_out — идентификатор группы, к которой преобразование "решило" отнести эту запись; _score — счет, значение от 0 до 1, которое отражает степень похожести данной записи на "идеальную" (canonical) для данной группы.

Lookup (Обращение к внешнему источнику) 

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

Fuzzy Lookup (Нечеткое обращение к внешнему источнику) 

так называемые нечеткие сравнения. Вы можете задать "уровень похожести" от 0 до 1. Соответственно, из внешнего источника данных будут возвращаться не только совпадающие значения, но и "похожие" на значения с источника.

Merge (Слияние) и Union All (Полное объединение) 

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

Merge Join (Соединение слиянием) 

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

Multicast (Множественная передача)

это преобразование распараллеливает поток входящих данных. В нем используется один источник и множество назначений. Одинаковая информация будет записана во все назначения.

OLE DB Command (Команда OLE DB)

это преобразование позволяет использовать команду SQL для каждой записи, которая передается с источника, причем в этой команде SQL информацию из этой записи можно использовать в качестве значений параметров. Это преобразование требует один источник (только типа OLE DB Source) и одно назначение (только типа OLE DB Destination).

Percentage Sampling (Процентная выборка) 

принимает данные из одного источника и передает их в два назначения. При этом в одно назначение (оно называется sampling unselected output) будут передаваться данные в том же виде, в котором они поступили с источника, а в другое, которое называется sampling selected output, поступит случайная выборка значений, которые передаются с источника. При этом вы можете определить процент значений, который попадет в выборку.

Pivot (Смена стобцов и строк) 

при применении этого преобразования увеличивается количество строк, зато снижается количество записей. Вам потребуется в свойствах преобразования на вкладке Input Columns выбрать нужные столбцы источника, а затем перейти на вкладку Input and Output Properties и для столбцов источника настроить значение свойства PivotUsage, определив, какая роль в преобразовании предназначается данному столбцу. Затем в разделе Output Columns нужно создать столбцы, которые будут передаваться назначению, и привязать их к столбцам источника при помощи свойства PivotKeyValue.

Unpivot (Обратная смена).

производит нормализацию таблицы.

Row Count (Счетчик строк) 

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

Row Sampling (Выборка строк) 

это преобразование случайным образом выбирает из всех записей источника точно указанное количество записей. Источник у этого преобразования может быть только один, а назначений может быть два — для полного набора записей и для выборки

Script Component (Компонент скрипта) 

можно использовать не только как преобразование, но и как источник или назначение данных. В этом преобразовании вы можете использовать свой собственный программный код (только Visual Basic.NET) для выполнения каких-либо операций с данными, которые передаются с источника. При размещении данного преобразования в пакете нужно выбрать: будет ли Script Component выступать в роли источника, назначения или преобразования. Если вы выбрали для него роль преобразования, то его нужно будет разместить, как и другие преобразования, между источником и назначением (см. рис. 9.7).

Рис. 9.7. Настройка преобразования Script Component

Slowly Changing Dimension Transformation (Преобразование медленно изменяющегося измерения) 

предназначено для внесения изменений в измерения кубов Analysis Services на основе информации из реляционного источника данных

Sort (Сортировка) 

предназначено для сортировки записей, которые поступают с источника.

Term Extraction (Извлечение термина) и Term Lookup (Извлечение термина из внешнего источника) 

сложные преобразования, использующие элементы полнотекстового поиска. Они могут работать только для источников на английском языке. Term Extraction извлекает из источника существительные и словосочетания с существительными (в зависимости от выбранного режима) и записывает их в назначение. Term Lookup позволяет также обратиться к еще одному источнику (он называется справочной таблицей (reference table)), и определить, сколько найдено между двумя источниками совпадений. Затем сумма совпадений вместе с извлеченными существительными и словосочетаниями записывается в назначение