DQS - сопоставление пустых доменов
Это способ настроить правила сопоставления в Проекте качества данных DQS, чтобы игнорировать сопоставление пустых доменов? Я нахожу очень странным, если два пустых значения домена считаются совпадающими на 100%. Я всегда могу, конечно, написать newid()
во всех пустых доменах внутри базового источника данных sql (view), но это излишне, и, возможно, есть "правильный" способ сделать это...
2 ответа
Я нашел приемлемое решение. Пустые поля внутри составного домена не считаются совпадающими.
Кстати, если все поля составного домена двух записей не заполнены, то эти домены считаются совпадающими на 100%. Но я вполне удовлетворен этим тем.
К сожалению, эта функция в настоящее время не поддерживается, поэтому существуют только обходные пути, которые вы перечислили выше.
"Нулевые значения в соответствующих полях двух записей будут считаться совпадением"
источники:
http://technet.microsoft.com/en-us/library/hh213071.aspx
Примечание при внедрении любого обходного пути - на производительность будет оказано негативное влияние. Вы заметите это больше с большими наборами данных.
FWIW Обходной путь, который я реализовал:
- сохранить результаты сопоставления в таблицу, включить столбец isMatchingScoreAdjusted default 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