2016-06-20 1 views
0

У меня есть требование, как показано ниже: У меня есть таблица источника, какДве даты столбцов в источнике, чтобы решить последнюю обновленную запись в Informatica

id | name | address | updt_date_1 | updt_date_2 
1 | abc | xyz  | 2000-01-01 | 1999-01-01 
1 | abc | pqr  | 2001-01-01 | 1999-01-01 
2 | lmn | ghi  | 1999-01-01 | 1999-01-01 
2 | lmn | stu  | 2000-01-01 | 2008-01-01 

Я хотел бы попасть в цель, как:

1 | abc | pqr 
2 | lmn | stu 

т.е. я хотел бы запись с последней датой обновления в одном из двух столбцов дат -updt_date_1 или updt_date_2

Просьба предложить, как это может быть реализовано в informatica ПК

ответ

0

В основном мы должны определить максимальную дату обновления1 и дату обновления2. Затем мы должны выбрать, какой из них максимум между ними.

  1. Использовать классификатор суса, а затем сортировать данные на основе идентификатора, имени.
  2. Добавить агрегат после. pull id, name, updt_date_1, updt_date_2. Создайте два столбца o/p - max_upd_dt1, max_upd_dt2 и вычислите MAX (updt_date_1), MAX (updt_date_2) соответственно. установить группу по id, name.
  3. Использование столяра для объединения выходных данных сортировщика и выхода агрегатора на основе идентификатора, имени. поэтому теперь у вас есть два дополнительных столбца: max_upd_dt1 и max_upd_dt2.
  4. Используйте преобразование выражения после столяра. Вытащите все столбцы Создать два выходных порта и набор логики, как показано ниже. - out_upd_dt1 = IIF (max_upd_dt1> max_upd_dt2, max_upd_dt1, updt_date_1) out_upd_dt2 = IIF (max_upd_dt1 < max_upd_dt2, max_upd_dt2, updt_date_2)
  5. Использование другого источника классификатором (сортировка по id, name) и присоединить его к вышеуказанному выражению tx. Регистрируйся на основе - ид = ид, имя = имя, out_upd_dt1 = updt_date_1, out_upd_dt2 = updt_date_2
  6. Возьмите идентификатор, имя, адрес

HTH

Koushik

0

Это требование может быть эффективно, используя только 3 преобразования (SourceQualifier, Expression и Filter). Пожалуйста, смотрите шаги

1) Используйте следующий SQL переопределение в преобразовании Source Qualifier, чтобы уменьшить два last_updated_date поля в один

SELECT 
    id 
    ,name 
    ,address 
    ,CASE WHEN updt_date_1 > updt_date_2 THEN updt_date_1 ELSE updt_date_2 AS updt_date 
FROM souce_table 
ORDER BY id, updt_date DESC 

Теперь первый ряд для каждого идентификатора будет искомой записи.

2) Для преобразования первой строки каждого идентификатора используйте преобразование выражения. Используйте следующие порты в том же порядке, в преобразовании выражения (префикс O_ означает, выходной порт, V_ означает переменный порт и I_ означает входной порт)

PORT    EXPRESSION 
v_FIRST_ROW_FLAG - IIF(v_PREV_ID==i_id,'N','Y') 
v_PREV_ID  - i_id 
o_FIRST_ROW_FLAG - v_FIRST_ROW_FLAG 

3) Затем добавить преобразование фильтра для фильтрации записей, которые не удовлетворяют следующее условие

IIF(o_FIRST_ROW_FLAG==Y,TRUE,FALSE) 

Подключите это преобразование фильтра к целевому определению. Это даст вам ожидаемый результат.

Смежные вопросы