2014年2月24日 星期一

Lab15:資料模楜比對

在這個 Lab 中,將練習以下二個主題:

  • 如何使用模糊查閱(Fuzzy Lookup),對整批的資料執行識別對應。
  • 如何使用 MDS Add-in for Excel 來清除重複資料。

使用模糊查閱(Fuzzy Lookup)

回顧前例

這個練習將會直接延用先前 Lab14 的封裝。該練習中,使用 DQS Cleansing Transformation 來執行資料清理工作,再使用 Lookup Transformation 來執行精確比對。 那樣子的結果 Match 與 NoMatch 的比例有 1065:784 。如下圖:

底下接著,我們將針對上圖中這些 NoMatch 的資料,透過 Fuzzy Lookup Transformation 再進行一次模糊比對,看看能額外找到多少筆相符的結果。

建立輸出資料表

在 DQS_STAGING_DATA 資料庫中建立以下資料表,用以儲存待會 SSIS 專案的輸出結果。

CREATE TABLE dbo.FuzzyMatchingResults
(
	CustomerKey INT NOT NULL PRIMARY KEY,
	FullName NVARCHAR(200) NULL,
	StreetAddress_Source NVARCHAR(200) NULL,
	StreetAddress NVARCHAR(200) NULL,
	StreetAddress_Status NVARCHAR(100) NULL,
	StreetAddress_Confidence NVARCHAR(100) NULL,
	StreetAddress_Reason NVARCHAR(4000) NULL,
	Updated INT NULL,
	Record_Status NVARCHAR(100) NULL,
	CleanCustomerKey INT NULL,
	_Similarity REAL NULL,
	_Confidence REAL NULL,
	_Similarity_FullName REAL NULL,
	_Similarity_StreetAddress REAL NULL
);

加入 Fuzzy Lookup Transformation

這個練習會直接延用先前一個 Lab14 的封裝。在原先 No Match 的 Multicast Transformation 輸出流中再接一個 Fuzzy Lookup Transformation ,設定如下:

指定參考資料表

設定「比對索引(match index)」的狀態

當使用「模楜查閱轉換」元件,當封裝第一次被執行時,該轉換會先複製參考資料表,並在複本資料表上建立索引,稱為「比對索引(match index)」。 你可以選擇是否儲存這個索引,若選擇儲存,你可以使用以下的「索引選項」來指定索引的狀態:

  • GenerateAndMaintainNewIndex:建立新索引、並儲存,並設定維護新索引。該轉換會在參考資料表上安裝觸發程序,於參考資料表發生更新時,自動將索引同步。
  • GenerateAndPersistNewIndex: 建立新索引,並儲存,但不對其進行維護。適用於當參考資料表是靜態的,也就是都不會變動的資料表。
  • GenerateNewIndex: 建立新索引,但不儲存。
  • ReuseExistingIndex: 不建立新索引,使用現有的索引,這會用在多個元件使用相同的查閱作業。

設定對應欄位

設定「相似度臨界值」(Similarity threshold)

加入 Union All Transformation

Fuzzy Lookup Transformation 底下加入一個 Union All Transformation ,並合併下圖中的二個輸出。

設定比對輸出

將上一步驟中的結果輸出到一個 OLE DB Destination 。其目的地就是本練習一開始就建立的輸出資料表。

設定 restartability

為了讓封裝可以重複執行,我們在控制流程中加入一個 T-SQL Statement Task 來刪除舊資料。

USE DQS_STAGING_DATA;
TRUNCATE TABLE dbo.CustomersDirtyMatch;
TRUNCATE TABLE dbo.CustomersDirtyNoMatch;
TRUNCATE TABLE FuzzyMatchingResults;

執行封裝

執行封裝後,你可以用以下語法檢查執行結果

--A)原先就在 Match 中的資料
SELECT C.CustomerKey, C.StreetAddress, FR.StreetAddress, C.FullName, FR.FullName, FR.CleanCustomerKey
From FuzzyMatchingResults FR
inner join CustomersClean C on C.CustomerKey=FR.CustomerKey*(-1) 
WHERE C.StreetAddress = FR.StreetAddress AND C.FullName = FR.FullName

--B)由 Fuzzy Lookup 找到的結果
SELECT C.CustomerKey, C.StreetAddress, FR.StreetAddress, C.FullName, FR.FullName, FR.CleanCustomerKey
From FuzzyMatchingResults FR
inner join CustomersClean C on C.CustomerKey=FR.CustomerKey*(-1)
WHERE FR.CleanCustomerKey IS NOT NULL AND (C.StreetAddress <> FR.StreetAddress OR C.FullName <> FR.FullName)

--C)由 Fuzzy Lookup 還是找不到的結果
SELECT C.CustomerKey, C.StreetAddress, FR.StreetAddress, C.FullName, FR.FullName, FR.CleanCustomerKey
From FuzzyMatchingResults FR
inner join CustomersClean C on C.CustomerKey=FR.CustomerKey*(-1) 
WHERE FR.CleanCustomerKey IS NULL;

由以上查詢結果,你可以發覺(B)與(C)的比為 691:93 ,也就是 Fuzzy Lookup 比對出了 691 筆相似資料。 這個數據是在相似度臨界值為 0.5 的狀況下所產生的結果,如果換成 0.8 則查閱結果為 358:426 。 也就是相似度臨界值要求越高,能查閱到的結果一定相對較少。

使用 MDS Add-in for Excel 和 DQS Matching

「 MDS Add-in for Excel」除了可以用來維護主要資料,也可以搭配 DQS KB 來執行資料比對。

Connect

連接到 MDS Server 。

連接後,在「主資料總管」中的模型選單中,選擇先前建立的 ModelCustomer 模型,並點選 ModelCustomer 實體。

Filter

我們由主資料中篩選出若干資料來執行比對。

Add Test Data

在篩選後的結果中再加入一筆測試資料,Jacquelin Suarez, -11010, 7800 Corinne Court 。

Match Data

執行「資料比對」。

設定比對要使用的知識庫。

Check the Results

你可以在「顯示詳細資料」功能中看到比對的相似度成績。

沒有留言:

張貼留言