簡體   English   中英

自定義腳本組件SSIS以過濾和合並重復項

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM