我有一個方案要在informatica中實現,我需要從基於PK的表中刪除重複的記錄。但是我需要保持PK值的第一次出現並移除其他值(如果重複PK)。使用Informatica從表中重複刪除
例如,如果我的來源有1,1,1,2,3,3,4,5,4。我想看到我的目標數據爲1,2,3,4,5。我必須從同一個表中讀取數據,並且需要加載到同一個表中,因此不能引入新表。請幫助我的投入。
在此先感謝!
我有一個方案要在informatica中實現,我需要從基於PK的表中刪除重複的記錄。但是我需要保持PK值的第一次出現並移除其他值(如果重複PK)。使用Informatica從表中重複刪除
例如,如果我的來源有1,1,1,2,3,3,4,5,4。我想看到我的目標數據爲1,2,3,4,5。我必須從同一個表中讀取數據,並且需要加載到同一個表中,因此不能引入新表。請幫助我的投入。
在此先感謝!
我想你想要的第一次出現,因爲除了你輸入的密鑰以外還有其他(數據)列。因此,你要
1,b
1,c
1,a
2,d
3,c
3,d
4,e
5,f
4,b
化作
1,b
2,d
3,c
4,e
5,f
?
在這種情況下,試試這個映射佈局:
SRC -> SQ -> SRT -> AGG -> TGT
SEQ/
當分揀機設置進行排序,sequence_port(DESC) 而聚合由KEY設置爲組中的關鍵,而sequence_port應不出門分揀機
希望你能跟着我:)
有多種方法可以做到這一點,最簡單的就太做在SQL重寫。
假設上面引用的例子,SQL會是這樣的。總的想法是
SQL:
select * from (
Select primary_key,column2 row_number() over (partition by primary_key order by primary_key) as distinct_key) where distinct_key=1
之前(即下一個PK復位前,所以如果你有3行與同PK他們將有1,2,3的行數)設置了一個主鍵的行號:
1,b
1,c
1,a
2,d
3,c
3,d
中間體查詢:
1,c,1
1,a,2
2,d,1
3,c,1
3,d,2
輸出:
1,c
2,d
3,d
我可以通過執行以下步驟來實現此目的。
1. Passing Sorted data(keys are EMP_ID, MOBILE, DEPTID) to an expression.
2. Creating the following variable ports in the expression and getting the counts.
V_CURR_EMP_ID = EMP_ID
V_CURR_MOBILE = MOBILE
V_CURR_DEPTID = DEPTID
V_COUNT =
IIF(V_CURR_EMP_ID=V_PREV_EMP_ID AND V_CURR_MOBILE=V_PREV_MOBILE AND V_CURR_DEPTID=V_PREV_DEPTID ,V_COUNT+1,1)
V_PREV_EMP_ID = EMP_ID
V_PREV_MOBILE = MOBILE
V_PREV_DEPTID = DEPTID
O_COUNT =V_COUNT
3. In the next transformation which is filter, I am taking only the records which have count more than 1 and deleting them using update strategy(DD_DELETE).
這是映射流程。 SQ-> SRTR-> EXP-> FIL-> UPD-> TGT
另外,當我試圖使用聚合器刪除它們時,它只刪除第一次出現重複但不是全部。
再次感謝您的意見!