[英]Custom Script Component SSIS to filter and merge duplicates
我有一個聯系人列表,其中包含來自兩個不同數據庫的信息,這些數據庫已執行並全部排序。 現在,我有了一個匯總列表,如下所示:
contactid add1 add2 city phone fullname source
----- ----- ----- ----- ----- ----- -----
BOOG1 1598 Tree Drive Apt:215 NYC 718-888-9989 Andrew Sample DB1
NULL NULL Apt:215 718-888-9989 Andrew Sample DB2
BOOG6 1598 Tree Drive Apt:215 NYC 718-888-8888 Andria Toefield DB1
NULL NULL Apt:215 718-888-9888 Andria Toefield DB2
....
....
....
基本上,我想使用一個腳本組件來比較“行安德魯樣本”,如果列為空,則選擇不存在的列;如果有沖突的數據,則從db2中選擇數據替換它。 因此,最終結果應如下所示:
contactid add1 add2 city phone fullname
----- ----- ----- ----- ----- -----
BOOG1 1598 Tree Drive Apt:215 NYC 718-888-9989 Andrew Sample
BOOG6 1598 Tree Drive Apt:215 NYC 718-888-9888 Andria Toefield
....
....
....
我不確定如何開始使用C#編寫腳本。 我不知道如何選擇該行,然后比較該行中的某些列。
我不會使用腳本任務來嘗試這種操作-跨行比較太困難了。
我會在名稱列上添加一個模糊分組轉換來分組。 這將添加一個_key_out列(以及其他列)。 我將結果放入SQL表中。
然后,我將在_key_out列上編寫一個具有GROUP BY的復雜SQL查詢,並為其他每個列編寫CASE語句,以解決您的“缺失”和“沖突”要求。
一旦將其指向任何規模的真實數據集,此設計的好處就會真正得到回報。 您無疑會遇到更復雜的場景,例如上面的示例,例如DB1有2個“ John Smith”行,DB2有3個“ John Smith”行。 您將能夠調整模糊分組參數和/或添加輔助模糊分組來打破平局。
一路上,您可以查詢中間SQL表中的結果以優化對這些問題的處理。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.