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


Секции и режим DirectQuery (табличные службы SSAS)

В этом разделе объясняется использование секций в моделях DirectQuery. Дополнительные общие сведения о секциях в табличных моделях см. в разделе Секции (табличные службы SSAS).

Инструкции по изменению используемой секции или просмотру сведений о секции см. в разделе Изменение секции DirectQuery (табличные службы SSAS).

Использование секций в режиме Direct Query

Для каждой таблицы следует указать одну секцию, которая будет использоваться в качестве источника данных DirectQuery. Если есть несколько секций, при переводе модели в режим DirectQuery по умолчанию первая секция, которая была создана в таблице, будет отмечена как секция DirectQuery. Ее можно будет изменить позже с помощью диспетчера секций в среде SQL Server Data Tools (SSDT).

Почему в режиме DirectQuery разрешена только одна секция?

В табличных моделях, таких как OLAP-модели, секции таблицы определяются с помощью SQL-запросов. Разработчик, создающий определение секции, должен следить за тем, чтобы секции не пересекались. Службы Analysis Services не проверяют принадлежность записей к одной или нескольким секциям.

Секции в кэшированной табличной модели ведут себя одинаково. При использовании модели, находящейся в памяти во время доступа к кэшу, DAX-формулы вычисляются для каждой секции, а результаты объединяются. Тем не менее, когда табличная модель работает в режиме DirectQuery, невозможно выполнить вычисление для нескольких секций, объединить результаты и преобразовать их в одну инструкцию SQL для отправки в реляционное хранилище данных. Это может привести к неприемлемой потере производительности, а также к потенциально неточным результатам после их объединения.

В силу этого для запросов, которые получают ответы в режиме DirectQuery, сервер использует одну секцию, которая была отмечена как первичная секция для доступа в режиме DirectQuery, которая называется Секция DirectQuery. SQL-запрос, указанный в определении этой секции, определяет полный набор данных, которые могут быть использованы для ответа на запросы в режиме DirectQuery.

Если явно определенных секций нет, ядро просто создает SQL-запрос для всего реляционного источника данных, выполняет операции на основе наборов, определяемые DAX-формулой, и возвращает результаты запроса.

Если в таблице имеется несколько секций и одна из их выбрана в качестве секции DirectQuery, все остальные секции автоматически отмечаются для использования только в памяти.

Секции в кэшированных моделях и в моделях DirectQuery

Во время настройки секции DirectQuery следует указать параметры обработки для секции.

Для секции DirectQuery есть два параметра обработки. Чтобы задать это свойство, воспользуйтесь Диспетчером секций в SQL Server Data Tools (SSDT) или Среда SQL Server Management Studio и выберите свойство Параметр обработки. В следующей таблице перечислены значения этого свойства и описан результат применения каждого значения при объединении со свойством DirectQueryUsage в строке подключения.

Свойство DirectQueryUsage

Свойство Параметр обработки

Примечания

DirectQuery

Никогда не обрабатывать эту секцию

Когда модель использует только DirectQuery, обработка не требуется.

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

InMemory с DirectQuery

Разрешить обработку секции

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

См. также

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

Секции (табличные службы SSAS)