Определение секций в моделях DirectQuery
Применимо к: SQL Server Analysis Services Azure Analysis Services
Fabric/Power BI Premium
В этой статье описывается, как секции используются в моделях DirectQuery. Более общие сведения о секциях в табличных моделях см. в разделе Секции в табличных моделях.
Примечание
Хотя таблица может содержать несколько секций, в режиме DirectQuery для использования при выполнении запросов может быть назначена только одна из них. Требование использовать одну секцию относится к моделям DirectQuery на всех уровнях совместимости.
Использование секций в режиме DirectQuery
Для каждой таблицы следует указать одну секцию, которая будет использоваться в качестве источника данных DirectQuery. Если есть несколько секций, при переводе модели в режим DirectQuery по умолчанию первая секция, которая была создана в таблице, будет отмечена как секция DirectQuery. Это можно изменить позже с помощью диспетчера секций в конструкторе табличных моделей в Visual Studio.
Почему в режиме DirectQuery разрешена только одна секция? В табличных моделях (как и в моделях OLAP) секции таблицы определяются запросами PowerQuery M или SQL-запросами. Разработчик, создающий определение секции, должен следить за тем, чтобы секции не пересекались. Службы Analysis Services не проверяют принадлежность записей к одной или нескольким секциям.
Секции в кэшированной табличной модели ведут себя одинаково. При использовании модели, находящейся в памяти во время доступа к кэшу, DAX-формулы вычисляются для каждой секции, а результаты объединяются. Тем не менее, когда табличная модель работает в режиме DirectQuery, невозможно выполнить вычисление для нескольких секций, объединить результаты и преобразовать их в одну инструкцию SQL для отправки в реляционное хранилище данных. Это может привести к неприемлемой потере производительности, а также к потенциально неточным результатам после их объединения.
Поэтому для запросов, ответ на которые создается в режиме DirectQuery, сервер использует одну секцию, которая была помечена как первичная секция для доступа DirectQuery. Она называется секцией DirectQuery. SQL-запрос, указанный в определении этой секции, определяет полный набор данных, которые могут использоваться для ответов на запросы в режиме DirectQuery.
Если явно определенных секций нет, ядро просто создает SQL-запрос для всего реляционного источника данных, выполняет операции на основе наборов, определяемые DAX-формулой, и возвращает результаты запроса.
Изменение раздела DirectQuery
Поскольку только одну секцию в таблице можно определить как секцию DirectQuery, службы Analysis Services по умолчанию используют первую секцию, созданную в таблице. Во время разработки проекта модели можно изменить раздел DirectQuery с помощью диспетчера секций. Для развернутых моделей можно изменить раздел DirectQuery с помощью SQL Server Management Studio.
Изменение секции DirectQuery для проекта табличной модели
В Visual Studio в конструкторе моделей щелкните таблицу (вкладку), содержащую секционированную таблицу.
Щелкните Расширения Секции>таблицы>.
В диспетчере секцийсекцией является текущая секция DirectQuery, имя которой содержит префикс (DirectQuery) .
Выберите другую секцию в списке Секции , затем выберите Установить в качестве DirectQuery. Кнопка Установить в качестве DirectQuery неактивна, если выбрана текущая секция DirectQuery, и не отображается, если в модели не поддерживается режим прямых запросов.
Изменение секции DirectQuery для развернутой табличной модели
В SQL Server Management Studio откройте базу данных модели в обозреватель объектов.
Разверните узел Таблицы , щелкните правой кнопкой мыши секционированную таблицу и выберите команду Секции.
Имя секции, определенной для использования в режиме DirectQuery, имеет префикс (DirectQuery).
Чтобы перейти к другой секции, щелкните значок Прямой запрос на панели инструментов, чтобы открыть диалоговое окно Настройка секции DirectQuery . Значок панели инструментов DirectQuery недоступен в моделях, не поддерживающих прямые запросы.
Выберите другую секцию в раскрывающемся списке Имя секции и при необходимости измените параметры обработки.