1

是否可以在 DQS数据质量项目中配置匹配规则以忽略匹配空域?如果两个空域值被认为是 100% 匹配,我觉得很奇怪。当然,我总是可以newid()在底层 sql 数据源(视图)内的所有空域中写入,但这有点矫枉过正,也许有“正确”的方法可以做到这一点......

匹配分数详情

4

2 回答 2

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
  • 查找具有空匹配的所有记录并计算调整后的值
  • 更新结果

示例过程

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
于 2014-03-31T00:20:11.583 回答
0

我找到了可以接受的解决方案。复合域内的空字段不被视为匹配。

顺便说一句,如果两条记录的所有复合域字段都是空白的,那么这些域被认为是 100% 匹配的。但我对此很满意。

于 2013-03-21T19:48:13.363 回答