Как извлечь все строки, для которых выполняется определенный критерий?Подробности в описании - PullRequest
0 голосов
/ 04 апреля 2019

Я пытаюсь загрузить набор номеров политик в моей цели на основе приведенных ниже критериев с помощью Informatica PowerCenter.

Я хочу выбрать все те строки номеров политик, для которых политика Rider = 0

Это мой источник: -

Policy  Rider   Plan
1234    0   1000
1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545
4321    3   2000
4321    1   2000

Цель должна выглядеть следующим образом: -

Policy  Rider   Plan
1234    0   1000
1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545

Политика номер 4321 не будет загружена.

Если я использую фильтр как Rider = 0, то я пропускаю нижние строки: -

1234    1   1010
1234    2   3000
9090    0   2000
9090    2   2545

Какой был бы идеальный способ загрузки данных такого типа с помощью PowerCenter Designer?

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Возьмите тот же источник в еще одном квалификаторе в том же отображении, используйте фильтр с Rider = 0, чтобы получить список уникальных номеров политик, который имеет Rider = 0, а затем используйте соединитель с вашим обычным источником по номеру политики.Это должно работать.

Другой метод, сортируйте ваши данные на основе политики и Rider и используйте переменные порты с условием, аналогичным приведенному ниже.

v_validflag=IIF(v_policy_prev!=policy, IIF(Rider=0, 'valid','invalid'), v_validflag)
v_policy_prev=policy

Затем отфильтруйте действительные записи.

0 голосов
/ 06 апреля 2019

Есть много вариантов.Вот два ...

Первый :
Это будет выглядеть так:

                                      // AGGREGATOR \\ 
SOURCE >> SOURCE QUALIFIER >> SORTER <<              >> JOINER >> TARGET
                                      \\============//

Подключите все порты из Source Qualifier (SQ) к преобразованию SORTER(или сортировать в самом SQ) и определить ключ сортировки для «Policy» и «Rider».После этого разделите поток на два конвейера:


  1. - Соедините «Policy» и «Rider» с преобразованием FILTER и отфильтруйте записи по «Rider» = 0.
    - После этой ссылки «Политика» (только) на AGGREGATOR и установите Group By на «ДА» для «Политика».
    - Добавить новый порт с функцией FIRST или MAX для порта «Policy».Это необходимо для удаления дубликатов «Политики».
    - Укажите «Сортированный ввод» в свойствах AGGREGATOR.
    - После этой ссылки «Политика» из AGR в JOINER как Master на вкладке Порт,

    2.
    - Второй поток, от SORTER, напрямую ссылается на вышеуказанный JOINER (с агрегированным «Policy») в качестве Detail.
    - Укажите «Сортированный ввод» в свойствах JOINER.
    - Установить тип соединения как «Обычное соединение» и условие соединения как ПОЛИТИКА (основной) = ПОЛИТИКА (подробности) в свойствах JOINER.


... Цель

Второй вариант:
Просто переопределить SQL в Source Qualifier ...

WITH PLC as (        
select POLICY
from SRC_TBL
where RIDER=0)
select s.POLICY, s.RIDER, s.PLAN
from PLC p left JOIN SRC_TBL s on s.POLICY = p.POLICY;

может варьироваться в зависимости от конструкции исходной таблицы ...

...