2017-10-13 69 views
0

我使用下一個記錄開始日期更新上一個記錄的結束日期時遇到問題。問題是兩個記錄都進入了相同的表格加載。除了所有列的組合外,沒有唯一的行標識符。 示例:源表上一記錄結束日期在informatica中更新使用下一個記錄開始日期

 
HICN  FIRST_NAME  LAST_NAME  M_NAME  DOB(string) START_DATE 
X123  ABC    DEF    M  ' 19600101  1/1/2013 
Y456  ABC    DEF    M   19600101  2/2/2014 
現在,(這是我的業務需求,我無能爲力)在目標中,我有一個額外的列END DATE。這是第一個負載,我必須使用名字,姓氏等的連接組合來動態識別第一個和第二個記錄相同,並且如果(且僅當)HICN號碼發生變化時,第一個和第二個記錄等成員,我必須更新第一記錄的END_DATE(即HICN X123記錄)與第二記錄的起始日期(即HICN Y456紀錄),所以我的目標應該是這樣的:

 
HICN FIRST_NAME LAST_NAME M_NAME  DOB(string) START_DATE  END DATE 
X123 ABC   DEF  M  ' 19600101  1/1/2013  2/2/2014 
Y456 ABC   DEF  M   19600101  2/2/2014  12/31/1990 

我想通了如何更新日期cols和標誌(我沒有提到的積極和非活動hicn成員)第二次運行,但不知道如何做到這一點,如果兩個記錄進來同一批次。任何幫助將不勝感激。由於

回答

0

請嘗試以下方法:

  1. 創建目標表像ROW_ID與VARCHAR2(100)列

  2. 與下面創建表達轉換的表達 -

    MD5(Col1中||''|| col2 ||''|| ... etc)

    '*' - 是一個分隔符, cised輸出

    這個MD5函數將生成,我們將使用它在下一步的32位掩碼

  3. 在每次當您收到時間對目標表動態查找現在

,一個新的行將被添加到目標以及動態查找。因此,如果您嘗試將ROW_ID字段與第二行計算的ROW_ID匹配,您可以輕鬆找出重複的記錄。

MD5是使用整列列表查找dups的最佳方法之一。不要想象創建動態查找否則你將無法找到dups。

讓我知道你是否需要更多信息。

+0

是的,我得到了你的解決方案。我已經應用了前兩個步驟。但是,在我使用動態查找之前:1.如果新傳入行與第一行匹配,我是否能夠更新第一行end_date,假設行的ROW_ID = 1? 2.如果是,我如何使用第二行的開始日期更新第一行的End_Date? 謝謝 –

+0

在這種情況下,您可能需要按相反順序排序記錄,然後獲取第一條記錄的開始日期並將其更新爲第二條匹配記錄的結束日期。重複以下記錄直到結束。希望它有幫助 –

+0

由於使用分揀機會降低我的映射性能,我可以使用Target Update來確定計數器(ROW_ID)> 1,然後使用override sql進行更新,並使用計數器值-1更新記錄日期。可以使用更新覆蓋嗎?@Aswin_Infa_Developer –

相關問題