是否可以在DQS 数据质量项目中配置匹配规则以忽略与空域的匹配?
如果两个空域值被认为是100%的匹配,我觉得很奇怪。当然,我总是可以在底层sql数据源(视图)中的所有空域中编写newid()
,但这样做太过分了,也许有“正确”的方法来做到这一点......
答案 0 :(得分:1)
遗憾的是,目前不支持此功能,因此仅存在您在上面列出的解决方法。
"两条记录的相应字段中的空值将被视为匹配"
来源:
http://technet.microsoft.com/en-us/library/hh213071.aspx
实施任何变通方法时的注意事项 - 性能将受到负面影响。对于更大的数据集,您会注意到这一点。
FWIW我实施的解决方法:
示例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
答案 1 :(得分:0)
我找到了可接受的解决方案。 复合域中的空字段不被视为匹配。
顺便说一下,如果 all 两个记录的复合域字段为空,那么这些域在100%时被视为匹配。但我对此非常满意。