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

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

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

Можно настроить преобразование «Уточняющий запрос» следующими способами.

  • Выбрать необходимый диспетчер соединений. Если необходимо подключится к базе данных, выберите диспетчер соединений OLE DB. Если необходимо подключится к файлу кэша, выберите диспетчер соединений с кэшем.

  • Указать таблицу или представление, содержащие эталонный набор данных.

  • Создать эталонный набор данных, указав инструкцию SQL.

  • Указать соединения между входом и эталонным набором данных.

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

  • Настроить параметры кэширования.

Преобразование «Уточняющий запрос» поддерживает следующие поставщики базы данных для диспетчера соединений OLE DB:

  • SQL Server

  • Oracle

  • DB2

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

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

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

Соединение может быть составным. Это значит, что можно объединить несколько столбцов на входе преобразования со столбцами в эталонном наборе данных. Преобразование поддерживает соединение столбцов с любыми типами данных, кроме DT_R4, DT_R8, DT_TEXT, DT_NTEXT и DT_IMAGE. Дополнительные сведения см. в разделе Типы данных служб Integration Services.

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

Уточняющие запросы выполняются преобразованием «Уточняющие запросы» с учетом регистра. Чтобы избежать сбоев поиска, вызванных различиями регистра в данных, можно предварительно преобразовать данные в верхний или нижний регистр с помощью преобразования «Таблица символов». Затем следует включить функции UPPER или LOWER в инструкцию SQL, создающую ссылочную таблицу. Дополнительные сведения см. в разделах Преобразование «Таблица символов», UPPER (Transact-SQL) и LOWER (Transact-SQL).

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

  • Вход.

  • Выход совпадающих строк. Выход совпадающих строк обрабатывает строки во входе преобразования, которые не совпадают, по крайней мере, с одной из записей ссылочного набора данных.

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

    ПримечаниеПримечание

    В службах SQL Server 2005 Integration Services (SSIS) у преобразования «Уточняющий запрос» только один выход. Дополнительные сведения о запуске преобразования «Уточняющий запрос», созданного в SQL Server 2005, см. в разделе Обновление преобразований типа «Уточняющий запрос».

  • Вывод ошибок на выходе.

Кэширование эталонного набора данных

В кэше в памяти хранится эталонный набор данных и хэш-таблица, индексирующая данные. Кэш остается в памяти, пока не завершится выполнение пакета. Можно сохранить кэш в кэш-файле (CAW).

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

Сохранение кэша в файл имеет следующие преимущества.

Далее приводятся режимы кэширования.

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

    Этот режим кэширования совместим с параметром полного кэширования, доступным для преобразования «Уточняющий запрос» в службах SQL Server 2005 Integration Services (SSIS).

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

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

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

    Этот режим кэширования совместим с параметром частичного кэширования, доступным для преобразования «Уточняющий запрос» в службах SQL Server 2005 Integration Services (SSIS).

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

    Этот режим кэширования совместим с параметром отсутствия кэширования, доступным для преобразования «Уточняющий запрос» в службах SQL Server 2005 Integration Services (SSIS).

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

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

Преобразование «Уточняющий запрос», настроенное не загружать эталонный набор данных в кэш, выдаст ошибку в том случае, если операция уточняющего запроса использует столбцы, содержащие значения NULL. Избежать этой ошибки можно, вручную обновив инструкцию SQL, добавив в нее условие OR ISNULL(имя_столбца). Если преобразование «Уточняющий запрос» было настроено для загрузки эталонного набора данных в кэш до своего запуска, операция уточняющего запроса завершается успешно.

ПримечаниеПримечание

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

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

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

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

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

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

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

Внешние ресурсы

Значок служб Integration Services (маленький) Будьте в курсе новых возможностей cлужб Integration Services

Чтобы загрузить новейшую документацию, статьи, образцы и видеоматериалы от корпорации Майкрософт, а также лучшие решения от участников сообщества, посетите страницу служб Integration Services на сайтах MSDN или TechNet:

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