在這個 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
你可以在「顯示詳細資料」功能中看到比對的相似度成績。
沒有留言:
張貼留言