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

#informatica #informatica-powercenter #joiner

Вопрос:

У меня есть плоский Файл1 (F1) с этими столбцами — key1, col1, col2 Плоский Файл2 (F2) с этими столбцами — key2, col1, col2 и одна таблица (T1) с этими столбцами — key3, col1, col2

Требование состоит в том, чтобы получить данные из всех 3 источников на основе приведенных ниже проверок — когда key1 в плоском файле (F1) совпадает с key2 в плоском файле(F2) — верните все совпадающие строки в F1 и F2, когда key1 в плоском файле (F1) не совпадает с key2 в плоском файле(F2) — Только тогда следует выполнить проверку между плоским файлом F1 и таблицей T1 на основе условия — key1 = key3 и если найдено совпадение — затем верните все совпадающие строки в T1 и F1

Для решения вышеуказанной задачи

  • Я создал преобразование столяра между этими 2 источниками — F1 (Мастер) и F2 (Деталь) и получил соответствующие строки, а тип соединения, который я выбрал, был «Детальное внешнее соединение».
  • Я застрял на том, как выполнить оставшиеся проверки? кто-нибудь может, пожалуйста, помочь?

Ответ №1:

Вы можете выполнить следующие действия

  • Сначала соедините FF1 и FF2 (внешнее соединение FF2, чтобы поступали все данные из FF1).
  • Затем используйте маршрутизатор для группировки данных, которых нет в FF2. Вы можете отправить соответствующие записи в целевую группу (группа 1).
  • Несоответствующие записи могут быть выбраны, когда ff1.ключ не равен нулю, но ff2.ключ2 равен нулю. Выберите эти записи и сопоставьте их с таблицей T1 с помощью JNR.
  • Вы можете отправить эти соответствующие записи в target.

Вся карта должна выглядеть так —

 sq_FF1 (master)                                                             |Grp 1 = ff1.key and ff2.key2 both NOT NULL (Matching)-------------------------------------------------> To TGT
       | JNR ( ff1.key=ff2.key2) (Detail outer join) --> ROUTER -(2 groups) |Grp 2 = ff1.key is NOT NULL and ff2.key2 IS NULL (NonMatching) -->  |
sq_FF2 (Detail)                                                                                                                                  | JNR key1 = key3 (inner join) ---> To TGT                   
sq_T1 -----------------------------------------------------------------------------------------------------------------------------------------> |
 

Ответ №2:

Не можем ли мы привести результирующий результат обоих наборов данных к одному общему преобразованию (например, объединению) -> и оттуда мы должны реализовать общую логику. т. е.

  • верните все совпадающие строки в F1 и F2
  • оставшиеся несопоставимые строки F1 должны быть объединены с таблицей T1
  • Наконец, результирующий результат вышеперечисленных 2 наборов должен быть направлен на одну общую трансформацию (например, объединение) ->, и оттуда у нас есть одна общая логика.
  1. Я использовал столярный перевод. чтобы привести соответствующие строки в F1 и F2 ->
  2. использованный фильтр transf. с конд. чтобы идентифицировать все несопоставимые строки F1 с помощью cond. Ключ2 равен нулю ->
  3. использованная столярная передача. чтобы связать таблицу T1 с записями, которые были определены как часть фильтра ->
  4. Результат, определенный как часть шага 1 и шага 3, направляется в Union, но при объединении данных с помощью union transf возникает проблема. поскольку мы приводим данные на основе соединения типа «Подробное внешнее соединение» (из-за которого данные, похоже, дублируются). Как избавиться от этой проблемы?