Создание карт Informatica из запроса sql - PullRequest
0 голосов
/ 26 марта 2020

Я хочу создать отображение, где мне нужно проверить, есть ли дубликаты. У меня ниже sql запрос, из которого я должен создать отображение.

Select count(1), A.market_cd
from (select distinct account_no, market_cd
   from Db1.Table1
   where $$monthenddate between date(eff_begin) and 
        date(eff_end) 
   group by account_no, market_cd having count(1) > 1
) A 
group by market_cd ;

Select count(1), A.market_cd
from (select distinct account_no, market_cd
   from Db2.Table2
   where $$monthenddate between date(eff_begin) and 
        date(eff_end) 
   group by account_no, market_cd having count(1) > 1
) A 
group by market_cd ;

Select count(1), A.market_cd
from (select distinct account_no, market_cd 
   from Db3.Table3
   where $$monthenddate between date(eff_begin) and 
        date(eff_end) 
   group by account_no, market_cd having count(1) > 1
) A 
group by market_cd

Результат: -

Count | Market_cd
0

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

Я должен объединить все вышеупомянутые запросы в целевой плоский файл. Какие логики c и преобразования можно использовать для создания сопоставления? Пожалуйста, кто-нибудь может помочь

1 Ответ

0 голосов
/ 28 марта 2020

Прежде всего ... вы можете использовать count (distinct account_no) и избавиться от подзапросов. Подробнее здесь.

Далее создайте отображение в Informatica с тремя источниками и Source qualifiers - и так же, как в запросе - добавьте Aggregator для каждого и используйте Union для объединения результатов.

На каждом Source Qualifier используйте свойство Source Filter, чтобы ограничить количество строк в соответствии с вашими потребностями, указав: $$monthenddate between date(eff_begin) and date(eff_end).

Не забудьте добавить переменная сопоставления и установите ее значение, лучше всего с помощью файла параметров.

...