2014年1月28日 星期二

資料重覆問題

在企業中,主要資料( Master Data)的來源常常會經由不同系統匯入,此時最大的挑戰就是「識別對應(identity mapping)」和「資料重複(de-duplication)」問題。

例如:來自不同系統的客戶資料,他們使用不同的識別碼,但卻表示同一位客戶,在建置主資料時,你該如何識別它們,以剔除這樣子的重複性。 另一種狀況是像名字或地址這類資料,常常因為輸入打字的原故,彼此之間有些微的不同,但是卻又代表相同的資料,在建置主資料時,也應該要剔除這樣子的重複性。

識別對應與資料重複問題

問題在哪裏

如果要比對二個不同系統的資料,若沒有共同的識別欄位,要如何比對呢? 這時大概只能採用資料的相似度(similarity)來判別,例如由姓名、地址、Email等屬性著手去判別出相同的資料。

要比對二個資料來源,就會有以下問題:

識別對應問題

下圖的上半部,表示二個資料來源,它們分別使用不同的鍵值,不同的資料。而下方則是二個資料表的 CROSS JOIN 結果。 這個合併後的表格,主要用來表達任意二筆資料的相似度。

你可以依相似度值高低來判斷他們是否有匹配。有了這層關係就可以用來進行資料的更正(cleansing)。

資料重複問題

另一個與識別對應相似的問題就是刪除資料重複的問題(de-duplication)。 它其實和上一個問題差不多,只不過比對的對象是來自同一個資料來源。

如何解決問題

要進行這類相似性比對,自然會需要用到相關的演算法。在這裡當然不會討論這些演算法,只要知道 SSIS Fuzzy Transformation 是使用微軟自行研發且非公開的演算法進行相似比對。

「DQS 」與「DQS 清理轉換」

想要減少資料重複的問題,就必須要使用近似比對(approximate matching)。以下工具都可以達到這個效果:

DQS 清理轉換(DQS Cleansing Transformation)

在 SSIS 封裝的 Data Flow 中,我們可以使用 DQS Cleansing Transformation 來找出可能重複的資料列。 DQS Cleansing Transformation 會使用 Data Quality Services (DQS) 的知識庫來更正資料,所以你必須預先建立好 DQS 知識庫。

進階選項設定

這些設定都是用來指定輸出資料的格式。

  • 標準化輸出(Standardize output)
    指出是否要根據定義域所定義的輸出格式,以標準化格式輸出資料。
  • 信賴(Confidence)
    指出是否要在更正資料中包含信賴層級的欄位。信賴層級表示 DQS 對更正或建議的確定程度。
  • 原因(Reason)
    指出是否要在更正資料中包含更正原因。
  • 附加的資料(Appended data)
    指出是否要輸出從現有參考資料提供者收到的其他資料。
  • 附加的資料結構描述(Appended data schema)
    指出是否要輸出資料結構描述。

DQS Matching

如同 DQS 中的其他資料品質程序,執行比對必須先建立知識庫,並使用以下步驟在資料品質專案中執行比對活動(matching activity):

  1. 在知識庫中建立比對原則(matching policy)。
  2. 在資料品質比對專案中執行刪除重複作業程序。

建立比對原則(matching policy)

知識庫中的比對原則是 DQS 用來進行比對的依據。 比對原則是由一個或多個比對規則所組成,這些規則會在 DQS 評估某一筆記錄與另一筆記錄的相符程度時識別將使用哪些定義域,並指定每一個定義域值在比對評估中所佔的加權比重。

執行比對專案

Implementing SSIS Fuzzy Transformations

使用 DQS 比對時,你會發現資料量會是一個迪卡兒乘積,當資料量較大時,這比對效能將會下降的非常快速。 而且該過程並不提供互動式的步驟來處理比對結果。 所以,若有這樣子的需求,就可以考量使用 Fuzzy Lookup Transformation 和 Fuzzy Grouping Transformation 來處理較大資料量的比對。 例如資料量超過千筆以上時就適合用這個轉換來處理,不過,這個轉換只能用在字串的比對,不像 DQS 還可以對數字或日期做比對。

Fuzzy Transformations Algorithm

模糊轉換元件,使用「傑卡德相似係數(Jaccard similarity coefficient)」演算法進行比對。 轉換進行時必需要連接到 SQL Server 的執行個體,用以建立轉換演算法所需的暫存 SQL Server 資料表。

Versions of Fuzzy Transformations

模糊轉換元件共有三種:

Fuzzy Lookup Transformation

「模糊查閱轉換」主要是在進行識別對應(identity mapping)工作。 也就是進行資料清理。例如:標準化資料、更正資料、提供遺漏值。

  • Fuzzy Lookup Transformation 與 Lookup Transformation 用法類似,只不過它使用模糊比對的方法進行查閱。
  • 在封裝資料流程中,「模糊查閱」轉換經常在「查閱」轉換之後。也就是先使用「查閱轉換」尋找完全相符項目,如果找不到,再使用「模糊查閱轉換」尋找相近似項目。
  • 「模糊查閱」轉換包含三種用於自訂其所執行之查閱的功能:
    • 每個輸入資料列傳回的相符項目上限。
    • Token 分隔符號
    • 相似度臨界值(similarity thresholds) 相似度門檻設的愈高,整個比對的過程效能會比較好些,因為模糊比對可以考量較少的比對對象。
  • 「模糊查閱轉換」的輸出資料行會包含二個額外的欄位:
    • _Similarity:(相似度分數)描述輸入與參考資料行中值之間相似度的資料行。  相似度分數由介於 0 與 1 之間。愈接近 1,表示二者愈相似。
    • _Confidence:(信心分數)描述相符品質的資料行。
      信心分數也是介於 0 與 1 之間的十進位值,它表示對相符的信心。

Fuzzy Grouping Transformation

「模糊群組轉換」主要是在進行消除重複(de-duplicating)工作。

  • 「模糊群組轉換」的輸出資料行會包含三個額外的欄位:
    • _key_in:每個資料列的唯一識別資料行。
    • _key_out:識別同一組重複資料列的資料行。
    • score:介於 0 與 1 之間的值,指出輸入資料列與標準資料列的相似度。

Excel Fuzzy Lookup Add-in

最後,微軟還有提供個 Excel 增益集,用來在 Excel 中處理模理比對的功能,這個增益集僅限 Excel 2000 使用,你可以在以下連結下載: Fuzzy Lookup Add-In for Excel

沒有留言:

張貼留言