Arhn - архитектура программирования

Нечеткий поиск служб SSIS по датам

Я пытаюсь сопоставить клиентов, используя три поля: Имя, Фамилия, Пол и Дата рождения. Насколько я понимаю, нечеткий поиск SSIS применяется только к строкам (никогда не видел этого в документации, просто так сказали некоторые блоггеры), поэтому в этом сценарии я могу каким-то образом использовать DOB для создания «доверия»? Как этот инструмент сравнивает даты?

Вот тема по этому вопросу: https://social.msdn.microsoft.com/Forums/sqlserver/en-US/d2e53f8c-abfc-461e-9263-fd46b95247c0/ssis-fuzzy-lookup-and-dates?forum=sqlintegrationservices


  • Документация говорит, что он будет выполнять точный поиск по столбцам, не относящимся к STR. . Есть ли причины, по которым вы не можете преобразовать DOB в строку перед выполнением нечеткого преобразования? 29.03.2016
  • Спасибо, нашел отрывок, почему-то не нашел при первом прочтении: В нечетком сопоставлении можно использовать только входные столбцы с типами данных DT_WSTR и DT_STR. Точное соответствие может использовать любой тип данных DTS, кроме DT_TEXT, DT_NTEXT и DT_IMAGE. 29.03.2016
  • @ESG: почему я не могу конвертировать DOB, это полностью противоречит цели. За этим последовали некоторые люди в той ветке, которую я цитировал. Нечеткое сопоставление не будет соответствовать одному к двум, а может соответствовать два к двумо или twi. Он работает на основе формулы расстояния и распространенных опечаток, а также комбинаций опечаток. Преобразование цифр в строки просто ничего не даст, потому что вы никогда не совершите ошибку. 29.03.2016
  • Понятно. В этом случае вам может быть лучше написать свой собственный скриптовый компонент, чтобы взвешивать различные параметры самостоятельно. Например, для DOB я бы предположил, что значение месяца + данных имеет большее значение, чем год. Или, в качестве альтернативы, важно количество дней между столбцом DOB и предоставленным значением. В любом случае компонент сценариев, вероятно, дает вам наибольшую гибкость. 29.03.2016
  • @ESG, это тоже очень хорошее предложение (использовать веса) - я поэкспериментирую со сценариями. Благодарю вас! 29.03.2016

Ответы:


1

Я часто ищу имя/дату рождения, и мне очень сложно найти правильный ответ. Вы можете рассмотреть возможность сортировки с помощью функции, аналогичной приведенной ниже. В основном это займет две 8-значные даты (ГГГГММДД) и подсчитает количество несовпадающих цифр.

Например, в этих парах дат есть 1 несовпадающая цифра:

  • 1976-10-20 и 1976-01-20 (10 против 1)
  • 1976-10-20 и 1975-10-20 (76 против 75)

В зависимости от того, с каким объемом данных приходится иметь дело, это хорошо для сортировки (т. е. размещения наилучшего совпадения первым), но не для фильтрации (поскольку индексация не используется).

ALTER FUNCTION dbo.BirthDateRank ( @DOB1 DATE, @DOB2 DATE )
RETURNS INT
AS
    BEGIN
        -- 10/31/2016 --> 10312016
        DECLARE @xDOB1 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB1, 101), '/', '');
        DECLARE @xDOB2 VARCHAR(10) = REPLACE(CONVERT(CHAR(10), @DOB2, 101), '/', '');

        DECLARE @i INT = 0;
        DECLARE @iRet INT = 0;

        WHILE @i <= LEN(@xDOB1)
        BEGIN
            SET @iRet = @iRet + CASE WHEN SUBSTRING(@xDOB1, @i, 1) = SUBSTRING(@xDOB2, @i, 1) THEN 0 ELSE 1 END

            SET @i = @i + 1
        END

        RETURN @iRet;

    END;
GO
29.03.2016
  • Большое спасибо, это такое отличное предложение. Однако я пытаюсь отследить функцию, чтобы увидеть, что она делает; так что это возвращает количество несовпадающих цифр? Например: 1945-02-23 и 1944-03-23 ​​возвращает ДВА, потому что 45 против 44 имеет ОДНО несоответствие, а 02 против 03 имеет еще одно? Спасибо! 29.03.2016
  • Ты понял! Просто помните, что это лучше всего подходит для сортировки небольших наборов данных, а не миллионов строк. 29.03.2016
  • извините, не знаю, почему я не выбрал лучший ответ раньше 26.08.2016
  • Новые материалы

    Коллекции публикаций по глубокому обучению
    Последние пару месяцев я создавал коллекции последних академических публикаций по различным подполям глубокого обучения в моем блоге https://amundtveit.com - эта публикация дает обзор 25..

    Представляем: Pepita
    Фреймворк JavaScript с открытым исходным кодом Я знаю, что недостатка в фреймворках JavaScript нет. Но я просто не мог остановиться. Я хотел написать что-то сам, со своими собственными..

    Советы по коду Laravel #2
    1-) Найти // You can specify the columns you need // in when you use the find method on a model User::find(‘id’, [‘email’,’name’]); // You can increment or decrement // a field in..

    Работа с временными рядами спутниковых изображений, часть 3 (аналитика данных)
    Анализ временных рядов спутниковых изображений для данных наблюдений за большой Землей (arXiv) Автор: Рольф Симоэс , Жильберто Камара , Жильберто Кейрос , Фелипе Соуза , Педро Р. Андраде ,..

    3 способа решить квадратное уравнение (3-й мой любимый) -
    1. Методом факторизации — 2. Используя квадратичную формулу — 3. Заполнив квадрат — Давайте поймем это, решив это простое уравнение: Мы пытаемся сделать LHS,..

    Создание VR-миров с A-Frame
    Виртуальная реальность (и дополненная реальность) стали главными модными терминами в образовательных технологиях. С недорогими VR-гарнитурами, такими как Google Cardboard , и использованием..

    Демистификация рекурсии
    КОДЕКС Демистификация рекурсии Упрощенная концепция ошеломляющей О чем весь этот шум? Рекурсия, кажется, единственная тема, от которой у каждого начинающего студента-информатика..