Поделиться через


Преобразование «Нечеткий уточняющий запрос»

Изменения: 5 декабря 2005 г.

Преобразование «Нечеткий уточняющий запрос» выполняет задачи по очистке данных, такие как стандартизация данных, исправление данных и замена отсутствующих значений.

Данное преобразование отличается от преобразования «Уточняющий запрос» использованием нечеткого соответствия. Преобразование «Уточняющий запрос» использует эквивалентное соединение для обнаружения совпадающих записей в ссылочной таблице. По завершению работы это преобразование возвращает либо четко совпадающую запись из ссылочной таблицы, либо ничего. В то же время преобразование «Нечеткий уточняющий запрос» замечает и нечеткие соответствия, возвращая одну или несколько похожих записей из ссылочной таблицы.

В потоке данных пакета преобразование «Нечеткий уточняющий запрос» часто следует за преобразованием «Уточняющий запрос». Сначала преобразование «Уточняющий запрос» пытается найти точные совпадения. Если ничего не найдено, преобразование «Нечеткий уточняющий запрос» приводит несколько неточных соответствий из ссылочной таблицы.

Для данного преобразования необходим доступ к эталонному источнику данных, в котором содержатся значения, используемые для очистки и расширения входных данных. Эталонный источник данных должен быть таблицей в базе данных SQL Server 2005. Соответствие между значением во входном столбце и значением в ссылочной таблице может быть точным или нечетким. Однако для настройки преобразования необходимо хотя бы одно нечеткое соответствие столбца. Если необходимы только четкие соответствия, используйте преобразование «Уточняющий запрос».

Это преобразование имеет один вход и один выход.

Для нечеткого соответствия могут использоваться только входные столбцы, имеющие типы данных DT_WSTR либо DT_STR. Для четкого соответствия может использоваться любой тип данных DTS, кроме DT_TEXT, DT_NTEXT и DT_IMAGE. Дополнительные сведения см. в разделе Типы данных служб Integration Services. Столбцы, которые участвуют в соединении входной и ссылочной таблиц, должны иметь совместимые типы данных. Например, можно объединить столбец с типом данных DTS DT_WSTR и столбец с типом данных SQL Server nvarchar, однако установление связи между столбцом с типом данных DT_WSTR и столбцом с типом данных int невозможно.

Это преобразование можно настраивать, определяя максимальный объем памяти, алгоритм сравнения строк и используемое данным преобразованием кэширование индексов и ссылочных таблиц.

Объем памяти, используемой преобразованием «Нечеткий уточняющий запрос», можно задать в пользовательском свойстве MaxMemoryUsage. Можно указать число мегабайтов (МБ) или значение 0, которое позволяет преобразованию использовать динамический объем памяти в зависимости от своих потребностей и наличия доступной физической памяти. Пользовательское свойство MaxMemoryUsage можно обновить с помощью выражения свойства при загрузке пакета. Дополнительные сведения см. в разделах Справочник выражений служб Integration Services, Использование выражений свойств в пакетах и Transformation Custom Properties.

Управление режимом нечеткого соответствия

Преобразование «Нечеткий уточняющий запрос» содержит три параметра настройки поиска: максимальное количество возвращаемых соответствий на входную строку, разделители лексем и пороги подобия.

Преобразование возвращает ноль или более результатов поиска вплоть до максимального числа, определенного пользователем. Определение максимального числа результатов поиска не гарантирует того, что преобразование выдаст максимально возможное число результатов поиска; оно гарантирует только то, что количество результатов поиска, возвращаемое преобразованием, не превысит заданного числа. Если установить значение максимального количества результатов поиска больше 1, выходные данные преобразования могут содержать более одной строки на один уточняющий запрос и некоторые строки могут дублироваться.

Преобразование предоставляет набор разделителей, используемый по умолчанию для маркировки данных, но можно добавить собственные разделители лексем. В свойстве Delimiters содержатся установленные по умолчанию разделители. Маркировка важна, так как она определяет блоки внутри данных, которые будут сравниваться друг с другом.

Пороги подобия могут быть установлены на уровне компонентов и соединений. Порог подобия на уровне соединений доступен только тогда, когда преобразование «Нечеткий уточняющий запрос» производится между столбцами входной и ссылочной таблиц. Диапазон подобия от 0 до 1. Чем ближе порог к 1, тем более сходными должны быть строки и столбцы, чтобы называться дубликатами. Порог подобия определяется при помощи установки свойства MinSimilarity на уровне компонентов и соединений. Чтобы удовлетворять условиям подобия, определенным на уровне компонентов, все строки должны иметь во всех результатах поиска степень сходства, большую, чем порог подобия, определенный на уровне компонентов, или равную ему. Таким образом, невозможно определить очень близкие совпадения на уровне компонентов до тех пор, пока совпадения на уровне строк или соединений не будут столь же близки.

Каждое совпадение включает показатель сходства и показатель достоверности. Показатель сходства — это математическая мера структурного сходства между входной записью и записью, найденной преобразованием «Нечеткий уточняющий запрос» в ссылочной таблице. Показатель достоверности — это вероятность того, что полученная величина является наиболее точным совпадением с искомой величиной среди всех остальных результатов поиска в ссылочной таблице. Присвоенный записи показатель достоверности зависит от остальных найденных совпадающих записей. Например, соответствие между СПб и Санкт-Петербург обладает низкой степенью сходства независимо от других результатов поиска. Но если Санкт-Петербург является единственным результатом поиска, то показатель достоверности будет высоким. Если же и Санкт-Петербург, и СПб найдены в ссылочной таблице, то достоверность СПб будет высокой, а достоверность Санкт-Петербург будет низкой. Однако из того, что у результата поиска высокий показатель сходства может совсем не следовать, что у него высокий показатель достоверности. Например, если ищется значение Глава 4, то результаты поиска Глава 1, Глава 2 и Глава 3 будут иметь высокий показатель сходства, но низкий показатель достоверности, так как остается неясным, какой из результатов является наиболее близким к искомому.

Показатель сходства является десятичным числом от 0 до 1, причем показатель сходства, равный единице, означает точное совпадение значения во входном столбце и значения в ссылочной таблице. Показатель достоверности, также являющийся десятичным числом от 0 до 1, показывает достоверность результата поиска. Если не найдено ни одного возможного соответствия, то данной строке присваиваются значения показателей совпадения и достоверности, равные 0, а выходные столбцы, скопированные из ссылочной таблицы, будут содержать значения NULL.

Иногда преобразование «Нечеткий уточняющий запрос» может не найти соответствий в ссылочной таблице. Это может произойти в том случае, если входной строкой для уточняющего запроса является одиночное короткое слово. Например, helo не совпадет с hello в ссылочной таблице, если в том или каком-нибудь другом столбце строки нет других маркеров.

Выходные столбцы преобразования включают входные столбцы, отмеченные как сквозные столбцы, выделенные столбцы в таблице уточняющих запросов и следующие дополнительные столбцы:

  • _Similarity — столбец, содержащий показатели сходства между значениями во входном и ссылочном столбце.
  • _Confidence — столбец, содержащий показатели достоверности соответствий.

Преобразование использует соединение с базой данных SQL Server 2005 для создания временных таблиц, необходимых алгоритму нечеткого соответствия.

Выполнение преобразования «Нечеткий уточняющий запрос»

При первом запуске преобразования пакетом преобразование копирует ссылочную таблицу, добавляет ключ целочисленного типа в новую таблицу и создает индекс в ключевом столбце. Затем преобразование создает в копии ссылочной таблицы индекс, называемый индексом соответствия. В индексе соответствия сохраняются результаты маркировки значений во входных столбцах преобразования, а затем преобразование использует эти маркеры при операциях поиска. Индекс соответствия — это таблица базы данных SQL Server 2005.

При повторном выполнении пакета преобразование может либо использовать уже существующий индекс соответствия, либо создать новый индекс. Если ссылочная таблица является статической, пакет может избежать потенциально затратных процессов перестроения индекса для повторных сеансов очистки данных. Если выбрано использование уже существующего индекса, индекс будет создан при первом запуске пакета. Если несколько преобразований «Нечеткий уточняющий запрос» используют одну и ту же ссылочную таблицу, то все они могут использовать один и тот же индекс. Операции поиска должны быть одинаковыми, чтобы можно было использовать индекс повторно; в них должны задействоваться одни и те же столбцы. Индексу можно дать название и выбрать соединение с базой данных SQL Server, в которой он будет сохранен.

Если преобразование сохраняет индекс соответствия, этот индекс может поддерживаться автоматически. Это означает, что каждый раз при обновлении записей в ссылочной таблице индекс соответствия также будет обновляться. Поддержка индекса соответствия может уменьшить время обработки, так как исчезает необходимость перестройки индекса во время запуска пакета. Можно определить способ, как преобразование управляет индексом соответствия.

В следующей таблице приводятся описания параметров индекса соответствия.

Параметр Описание

GenerateAndMaintainNewIndex

Создает новый индекс, сохраняет и поддерживает его. Преобразование устанавливает триггеры на ссылочную таблицу для синхронизации ссылочной таблицы и таблицы индекса.

GenerateAndPersistNewIndex

Создает и сохраняет новый индекс, но не поддерживает его.

GenerateNewIndex

Создает новый индекс, но не сохраняет его.

ReuseExistingIndex

Повторно использует уже существующий индекс.

Поддержка таблицы индекса соответствия

Параметр GenerateAndMaintainNewIndex устанавливает триггеры на ссылочную таблицу для синхронизации ссылочной таблицы и таблицы индекса. Если необходимо убрать установленный триггер, нужно запустить хранимую процедуру sp_FuzzyLookupTableMaintenanceUnInstall и ввести в качестве входного параметра имя, определенное в свойстве MatchIndexName.

Нельзя удалять поддерживаемую таблицу индекса соответствия перед запуском хранимой процедуры sp_FuzzyLookupTableMaintenanceUnInstall. Если таблица индекса соответствия удалена, то триггеры в ссылочной таблице будут работать некорректно. Все последующие обновления ссылочной таблицы будут выдавать ошибку до тех пор, пока вручную не будут сброшены триггеры в ссылочной таблице.

Команда SQL TRUNCATE TABLE не запускает триггеры DELETE. Если ссылочная таблица была обработана командой TRUNCATE TABLE, то синхронизация между ссылочной таблицей и индексом соответствия нарушается и преобразование «Нечеткий уточняющий запрос» перестает работать. Если триггеры, поддерживающие таблицу индекса соответствия, установлены на ссылочную таблицу, необходимо использовать команду SQL DELETE вместо команды TRUNCATE TABLE.

Сравнение строк

При настройке преобразования «Нечеткий уточняющий запрос» можно определить алгоритм сравнения, который преобразование применяет для поиска записей в ссылочной таблице. Если присвоить свойству Exhaustive значение True, то преобразование будет сравнивать каждую входную строку с каждой строкой в ссылочной таблице. Этот алгоритм сравнения может дать более точные результаты, но, вероятнее всего, данное преобразование будет выполняться довольно долго в том случае, если число строк в ссылочной таблице велико. Если свойству Exhaustive присвоено значение True, то вся ссылочная таблица будет загружена в память. Во избежание проблем с производительностью рекомендуется присваивать свойству Exhaustive значение True только во время разработки пакета.

Если свойство Exhaustive имеет значение False, преобразование «Нечеткий уточняющий запрос» возвращает только результаты, в которых есть по крайней мере одна лексема или подстрока (подстрока называется q-gram), похожая на входную запись. Для повышения эффективности уточняющих запросов в инвертированном индексе, используемом преобразованием «Нечеткий уточняющий запрос» для поиска совпадений, индексируется только подмножество лексем в каждой строке таблицы. Если входных данных мало, свойству Exhaustive можно задать значение True, чтобы среди результирующих совпадений были и те, для которых в индексной таблице нет похожих лексем.

Кэширование индексов и ссылочных таблиц

При настройке преобразования «Нечеткий уточняющий запрос» можно определить, будет ли преобразование производить частичное кэширование индексов и ссылочных таблиц перед началом работы. Если свойству WarmCaches присвоено значение True, то индексы и ссылочная таблица будут загружены в память. Когда на вход подается большое количество строк, присвоением свойству WarmCaches значения True можно добиться увеличения производительности преобразования. Когда на вход подается небольшое количество строк, присвоением свойству WarmCaches значения False можно ускорить процесс повторного использования больших индексов.

Временные таблицы и индексы

В процессе выполнения преобразование «Нечеткий уточняющий запрос» создает временные объекты, такие как таблицы и индексы в базе данных SQL Server 2005, с которой соединяется данное преобразование. Размер временных таблиц и индексов пропорционален числу строк и маркеров в ссылочной таблице и числу маркеров, которые создает преобразование «Нечеткий уточняющий запрос», поэтому они потенциально могут занимать существенный объем места на диске. Также преобразование производит запросы этих временных таблиц. Поэтому необходимо учитывать то, что преобразование «Нечеткий уточняющий запрос» должно быть соединено с экземпляром базы данных SQL Server, который не связан с рабочим сервером, особенно если место на диске на рабочем сервере ограниченно.

Производительность этого преобразования может повышаться путем размещения используемых им таблиц и индексов на локальном компьютере. Если используемая преобразованием «Нечеткий уточняющий запрос» ссылочная таблица находится на рабочем сервере, необходимо рассмотреть возможность копирования таблицы на отладочный сервер и настройки доступа преобразования «Нечеткий уточняющий поиск» к этой копии. С помощью этого можно предотвратить использование ресурсов рабочего сервера запросами поиска. Кроме того, если преобразование «Нечеткий уточняющий запрос» поддерживает индекс соответствия, то есть если свойству MatchIndexOptions присвоено значение GenerateAndMaintainNewIndex, то преобразование может заблокировать ссылочную таблицу на время проведения операции по очистке данных и предотвратить доступ к ней других пользователей и приложений.

Настройка преобразования «Нечеткий уточняющий запрос»

Свойства задаются через конструктор служб SSIS или программно.

Дополнительные сведения о свойствах, которые можно настроить программно или при помощи диалогового окна Редактор преобразования «Нечеткий уточняющий запрос», см. в следующих разделах:

Дополнительные сведения о свойствах, которые можно задать в диалоговом окне Расширенный редактор или программно, см. в следующих разделах:

Дополнительные сведения о настройке свойств см. в следующих разделах:

См. также

Основные понятия

Преобразование «Уточняющий запрос»
Преобразование «Нечеткое группирование»
Преобразования служб Integration Services

Справка и поддержка

Получение помощи по SQL Server 2005

Журнал изменений

Версия Журнал

5 декабря 2005 г.

Новое содержимое:
  • Добавлено описание пользовательского свойства MaxMemoryUsage.
  • Добавлено описание подстроки q-gram.
Измененное содержимое:
  • Разъяснено назначение свойства Exhaustive.