2013-03-20 45 views
1

是否配置DQS 數據質量項目中匹配規則忽略匹配空域的方法? 我覺得很奇怪,如果兩個空的域值被認爲是100%的匹配。我總是可以的,當然,寫底層SQL數據源(視圖)內的所有空域newid(),但是這是矯枉過正,也許還有「正確」的方式做到這一點...DQS - 匹配空域

Matching Score Details

回答

0

我找到了合適的解決方案。 複合域內部的空字段不被視爲匹配。

順便說一句,如果全部兩個記錄的複合域字段是空白的,那麼這些域被視爲100%匹配。但我對此非常滿意。

1

很遺憾,此功能目前不受支持,因此只有您上面列出的解決方法存在。

「中的兩個記錄的相應字段爲空值將被認爲是匹配的」

來源:

http://technet.microsoft.com/en-us/library/hh213071.aspx

http://social.msdn.microsoft.com/Forums/sqlserver/en-US/7b52419c-0bb8-4e56-b920-e68ff551bd76/can-i-set-a-matching-rule-to-only-match-if-the-value-is-not-null?forum=sqldataqualityservices

實施任何解決方法時的注意事項 - 性能會受到負面影響。你會發現更多的數據集。

FWIW我實現的解決辦法:

  • 保存匹配結果到一個表,包括列isMatchingScoreAdjusted默認0
  • 發現有一個空匹配的所有記錄,並計算出調整值
  • 更新導致

例如PROC

DECLARE @GIVEN_NAME FLOAT = 22; 

WITH adjustedscore 
AS (
    SELECT c.MatchingScore 
     + case when p.GIVEN_NAME is null and c.GIVEN_NAME is null then [email protected]_NAME else 0 end 
     as [AdjustedMatchingScore] 
     ,c.RecordId 
FROM [dbo].[dqs_matches] p 
INNER JOIN [dbo].[dqs_matches] c ON c.SiblingId = p.RecordId 
WHERE c.IsPivot = 0 
    AND p.GIVEN_NAME IS NULL 
    AND c.GIVEN_NAME IS NULL 
) 
UPDATE m SET MatchingScore = a.AdjustedMatchingScore, isMatchingScoreAdjusted = 1 
FROM adjustedscore a 
INNER JOIN [dbo].[dqs_matches] m ON m.RecordId = a.RecordId 
where m.isMatchingScoreAdjusted = 0