Руководство по свертыванию запросов в Power BI Desktop
Эта статья предназначена для разработчиков моделей данных в Power BI Desktop. В ней приводятся рекомендации по тому, в каких случаях и каким образом можно добиться свертывания запросов Power Query.
Под свертыванием запроса Power Query понимается создание одного выражения запроса, которое извлекает и преобразовывает исходные данные. Дополнительные сведения см. в разделе Свертывание запросов Power Query.
Руководство
Инструкции по свертыванию запросов зависят от режима модели.
Для таблиц с режимом хранения DirectQuery или Двойной свертывание запросов Power Query должно быть достижимо.
Для таблицы с режимом Импорт свертывание запросов может быть достижимо. Если запрос основывается на реляционном источнике и возможно построение одной инструкции SELECT, оптимальная производительность обновления данных достигается посредством обеспечения свертывания запросов. Если подсистеме комбинирования Power Query по-прежнему требуется обрабатывать преобразования, необходимо постараться свести объем этих задач к минимуму, особенно при работе с большими наборами данных.
В списке ниже приводятся конкретные указания.
Делегируйте максимально возможный объем задач обработки источнику данных. Если свертывание всех шагов запроса Power Query невозможно, необходимо определить шаг, на котором такая возможность пропадает. По возможности следует перенести дальнейшие шаги на более ранний этап последовательности, что позволит включить их в процесс свертывания запросов. Обратите внимание на то, что подсистема комбинирования Power Query может автоматически изменять порядок шагов в вашем запросе при создании исходного запроса.
При работе с реляционным источником данных, если шаг, на котором становится невозможным свертывание запросов, может быть выполнен в одной инструкции SELECT или в рамках процедурной логики хранимой процедуры, следует рассмотреть возможность использования машинной инструкции SQL.
Используйте машинный SQL-запрос. Если запрос Power Query извлекает данные из реляционного источника, некоторые источники позволяют использовать машинный SQL-запрос. Фактически в качестве такого запроса может выступать любая допустимая инструкция, в том числе выполнение хранимой процедуры. Если такая инструкция генерирует несколько результирующих наборов, возвращается только первый из них. Параметры можно объявить в инструкции, однако мы рекомендуем использовать функцию M Value.NativeQuery. Она позволяет безопасно и удобно передавать значения параметров. Необходимо понимать, что подсистема комбинирования Power Query не может выполнять свертывание последующих шагов запроса, поэтому в инструкцию машинного запроса следует включить всю логику преобразования или по возможности большую ее часть.
При работе с машинными SQL-запросами важно учитывать два момента.
- Для таблицы модели DirectQuery в качестве запроса необходимо использовать инструкцию SELECT. Обобщенные табличные выражения (CTE) или хранимые процедуры для этих целей не подходят.
- Для добавочного обновления использовать машинный SQL-запрос нельзя. Это связано с тем, что подсистеме комбинирования Power Query в такой ситуации придется извлечь все исходные строки и затем применить фильтры, чтобы определить добавочные изменения.
Важно!
Машинный SQL-запрос позволяет не только извлекать данные. Можно выполнить любую допустимую инструкцию (при необходимости даже несколько раз), в том числе и такую, которая изменяет или удаляет данные. Важно применять принцип наименьших привилегий, который гарантирует, что учетная запись, используемая для доступа к базе данных, будет иметь разрешения только на чтение необходимых данных.
Подготовка и преобразование данных в источнике. Если вы определяете, что определенные Power Query шаги запроса невозможно сложить, возможно, можно применить преобразования в источнике данных. Для этого можно создать представление базы данных, в котором осуществляется логическое преобразование данных источника, либо физически подготовить и материализовать данные до того, как Power BI запросит их. В качестве примера надлежащей подготовки данных можно привести реляционное хранилище данных, которое обычно состоит из предварительно интегрированных источников данных организации.
Дальнейшие действия
Дополнительные сведения по этим вопросам см. в следующих ресурсах.
- Концептуальная статья о свертывании запросов Power Query
- Добавочное обновление для наборов данных
- У вас появились вопросы? Попробуйте задать вопрос в сообществе Power BI.