Question

Is it a way to configure matching rules in the DQS Data Quality Project to ignore matching the empty domains? I find it very strange if two empty domain values are considered as match for 100%. I always can, of course, write the newid() in all the empty domains inside the underlying sql data source (view), but this is overkill and maybe there are "right" way to do this...

Matching Score Details

Was it helpful?

Solution 2

I found acceptable solution. Empty fields inside composite domain are not considered as matched.

By the way if all the composite domain fields of two records are blank, then these domains are considered as matched on 100%. But I am quite satisfied this that.

OTHER TIPS

Sadly this feature is not currently supported so only the workarounds you list above exist.

"Null values in the corresponding fields of two records will be considered a match"

sources:

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

A note when implementing any workaround - the performance will be negatively impacted. You will notice this more with larger data sets.

FWIW The workaround I implemented:

  • save matching results to a table, include a column isMatchingScoreAdjusted default 0
  • find all records that have a null match and calculate adjusted value
  • update results

example 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 -@GIVEN_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
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top