Столярное преобразование в Informatica с ПРИМЕРОМ

⚡ Умное резюме

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

  • 🧩 Мастер-класс и детальная проработка: Для преобразования используются два входных конвейера, и на вкладке «Порты» определяется, какой из них будет выступать в качестве основного.
  • 💾 Основной файл кэширован: Основной конвейер обработки данных всегда встроен в индекс и кэш данных, поэтому меньший по размеру источник данных находится там.
  • 🔗 Четыре типа соединений: Параметры Normal, Master Outer, Detail Outer и Full Outer определяют, какие несовпадающие строки сохранятся после объединения.
  • 🧪 Реализованный пример: EMP и DEPT объединяются по deptno с помощью обычного объединения и загружаются в EMP_DEPTNAME.
  • ️ Только равенство: Условие объединения сравнивает порты с помощью оператора равенства, и оба порта должны иметь один и тот же тип данных.
  • ⚡ Отсортированные входные данные: Предварительная сортировка обоих конвейеров по портам условий сокращает объем входящего и исходящего трафика на диске во время сеанса.

Столярное преобразование в информатике

Что такое столярное преобразование?

Преобразование Joiner — это активное и связанное преобразование, которое предоставляет возможность создавать соединения в Informatica. Соединения, созданные с помощью преобразования Joiner, аналогичны соединениям в базах данных. Преимущество преобразования Joiner заключается в том, что соединения можно создавать для гетерогенных систем (различных баз данных).

В преобразовании Joiner для объединения используются два источника. Эти два источника называются

  • Главный источник
  • Подробный источник

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

В процессе выполнения основной источник данных кэшируется в памяти для целей объединения. Поэтому рекомендуется выбирать в качестве основного источника источник с меньшим количеством записей. Основной конвейер обработки данных хранится в двух кэшах: индексном кэше для значений, используемых в условии объединения, и кэше данных для остальных строковых данных.

Типы соединений в преобразовании Joiner

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

  1. Мастер внешнего соединения – При внешнем соединении по основному источнику возвращаются все записи из источника подробных данных, и возвращаются только соответствующие строки из основного источника.
  2. Подробное внешнее соединение – При внешнем соединении с подробными данными из источника подробных данных возвращаются только совпадающие строки, а из основного источника возвращаются все строки.
  3. Полное внешнее соединение – При полном внешнем соединении возвращаются все записи из обоих источников.
  4. Обычное соединение – При обычном объединении из обоих источников возвращаются только совпадающие строки.

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

Тип соединения Строки сохранены из основного файла Строки скрыты от подробностей эквивалент SQL
Обычное соединение Только совпадение Только совпадение Внутреннее соединение
Мастер внешнего соединения Только совпадение Все строки Левое внешнее соединение в источнике данных
Подробное внешнее соединение Все строки Только совпадение Левое внешнее соединение на главном источнике
Полное внешнее соединение Все строки Все строки Полное внешнее соединение

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

Как использовать преобразование Joiner в Informatica

В этом примере мы объединим таблицы сотрудников и отделов с помощью преобразования Joiner. Выполните восемь шагов, описанных ниже, в таблице Map.ping Дизайнер.

Шаг 1) Создайте новую целевую таблицу EMP_DEPTNAME в базе данных, используя приведенный ниже скрипт, и импортируйте эту таблицу в целевые объекты Informatica.

Загрузите указанный выше файл emp_deptname.sql.

Шаг 2) Создать новый картаping и импортировать исходные таблицы «EMP» и «DEPT», а также целевую таблицу, созданную на предыдущем шаге. Все три определения теперь находятся на холсте, как показано ниже.

Картаping Холст дизайнера с источниками EMP и DEPT, а также определением целевого объекта EMP_DEPTNAME.

Шаг 3) В меню «Преобразование» выберите пункт «Создать». Затем в окне «Создать преобразование», показанном ниже,

  1. Выберите преобразование столяра
  2. Введите имя преобразования «jnr_emp_dept».
  3. Выберите вариант создания

Создайте окно преобразования, выбрав «Соединитель» и введя имя jnr_emp_dept.

Шаг 4) Перетащите все столбцы из обоих Квалификаторы источника к преобразованию Joiner. Оба конвейера теперь связаны с jnr_emp_dept, как показано на скриншоте.

Столбцы из обоих источников данных перетаскиваются в преобразование jnr_emp_dept Joiner.

Шаг 5) Double Щелкните по преобразованию «Соединитель», затем в окне «Редактировать преобразования»

  1. Выберите вкладку условия
  2. Нажмите на значок добавления нового условия.
  3. Выберите deptno в списке основных и подробных столбцов.

Теперь на вкладке «Условие» отображается условие для единственного соединения по адресу deptno.

Вкладка «Условия» преобразования «Соединитель» с выбранным номером отдела в столбцах «Основные данные» и «Подробности».

Шаг 6) Затем в том же окне

  1. Выберите вкладку свойств
  2. Выберите «Обычное соединение» в качестве типа соединения.
  3. Нажмите кнопку ОК

Далее отображается вкладка «Свойства» с заданным типом соединения.

Вкладка «Свойства» преобразования «Соединитель» с типом соединения, установленным на «Обычное соединение».

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

Шаг 7) Double Чтобы открыть окно «Редактирование преобразований», щелкните по преобразованию «Соединитель», а затем...

  1. Выберите вкладку портов
  2. Выберите любой столбец определенного источника, который вы хотите сделать основным.
  3. Выберите OK

На вкладке «Порты» выбранный конвейер помечается как главный, как показано ниже.

Вкладка «Порты» преобразования Joiner с флагом master, установленным для одного исходного конвейера.

Шаг 8) Свяжите соответствующие столбцы из преобразования Joiner с целевой таблицей. Картаping Теперь данные поступают из обоих источников через объединение с EMP_DEPTNAME.

Объединенные столбцы, связанные из таблицы jnr_emp_dept с целевой таблицей EMP_DEPTNAME.

Теперь сохраните карту.ping и выполнить его после создания Сессия и рабочий Для этого. Объединение будет выполнено с помощью инструмента Informatica Joiner, и соответствующие данные будут извлечены из обеих таблиц.

Свойства преобразования соединителя

Вкладка «Свойства» содержит не только тип соединения. Приведенные ниже настройки определяют объем памяти, используемый для соединения, и место записи файлов кэша.

настройка Что он контролирует
Тип соединения Обычный, основной внешний, детальный внешний или полный внешний. Определяет, какие несовпадающие строки будут сохранены.
Условие присоединения Список пар «главный-подробный порт» сравнивается с помощью оператора равенства. Несколько условий объединены с помощью оператора И.
Отсортированный ввод Указывается, что оба конвейера уже поступают отсортированными по портам условий, что позволяет службе интеграции минимизировать ввод и вывод данных на диск.
Основной порядок сортировки Порядок сортировки исходных данных, используемых вместе с отсортированными входными данными.
Каталог кэша Каталог, в котором создаются файлы индекса и кэша данных. По умолчанию используется переменная процесса $PMCacheDir.
Размер кэша данных участника Размер кэша данных, хранящего основные строки. По умолчанию установлено значение «Авто», которое позволяет службе интеграции самостоятельно определять его размер.
Размер кэша индекса объединения Размер кэша индекса, хранящего значения основных условий. По умолчанию — Авто.
Объем преобразований Применяет объединение к каждой транзакции, ко всем входящим данным или к данным на уровне строк.

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

Правила и ограничения преобразования соединителей

Некоторые ограничения становятся очевидными только при наличии карты.ping Проверено, поэтому дешевле узнать об этом до того, как порты будут связаны.

  • Только равенство. В условии объединения порты сравниваются с помощью оператора равенства. Операторы сравнения, такие как «больше», «меньше» или «не равно», в условии не принимаются.
  • Соответствие типов данных. Оба порта в условии должны иметь одинаковый тип данных. Конструктор проверяет это, поэтому несовпадающие столбцы сначала необходимо преобразовать, обычно с помощью преобразования выражений.
  • Стратегия обновления исходного кода отсутствует. Преобразование Joiner нельзя использовать, если какой-либо из входных конвейеров содержит преобразование Update Strategy.
  • Без последовательности Generator непосредственно перед ним. Соединение последовательности Generator Преобразование, выполняемое непосредственно перед Joiner, не поддерживается.
  • Отключить кэширование невозможно. Основной конвейер обработки данных всегда кэшируется, поэтому меньший по размеру источник данных должен находиться на стороне основного конвейера, и именно поэтому размер кэша имеет значение при больших операциях объединения.

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

Часто задаваемые вопросы (FAQ)

Два. Каждый Joiner принимает один главный и один подробный конвейер, поэтому объединение трех источников означает соединение двух из них: выход первого становится входным конвейером для второго. В общем случае, для n источников требуется n минус один.

Когда обе таблицы находятся в одной реляционной базе данных, Source Qualifier переносит операцию объединения в базу данных, что полностью исключает кэширование. Joiner следует использовать только в том случае, если два источника разнородны или уже находятся в отдельных конвейерах обработки данных.

Кэш индекса хранит значения портов мастера, указанные в условии объединения, а кэш данных хранит остальные данные строк мастера, возвращаемые в результате объединения. Оба кэша формируются только из основного конвейера, никогда не из детального конвейера.

Нет. Значение NULL в любом из портов приводит к сбою условия, точно так же, как и в SQL, поэтому такие строки рассматриваются как несовпадающие. Замените значения NULL значением по умолчанию в вышестоящем потоке, когда предполагается соединение.

Да. Добавьте определение источника на карту.ping Дважды, чтобы образовались два отдельных конвейера, затем один подается на сторону "главный", а другой - на сторону "подробный". Это обычный способ преобразования столбца "менеджер" в имя сотрудника.

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

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

Copilot быстро создает эквивалентные SQL-запросы и выполняет преобразование типов данных, что сокращает время подготовки портов. Он не видит размеры вашего кэша или количество строк, поэтому проверяйте каждое предложение по карте.ping перед сохранением.

Подведем итог этой публикации следующим образом: