Руководство по сворачиванию запросов в Power BI Desktop

В этой статье рассматриваются модели для разработки моделей данных в Power BI Desktop. В ней приведены рекомендации по тому, когда и как можно свертывания запросов Power Query.

Свертка запросов — это возможность создания запроса Power Query с одним оператором запроса, который извлекает и преобразует исходные данные. Дополнительные сведения см. в статье о свертке запросов Power Query.

Руководство

Рекомендации по свертке запросов отличаются в зависимости от режима модели.

Для таблицы режима хранения DirectQuery или двойного хранилища запрос Power Query должен достичь свертывания запросов.

Для таблицы импорта можно добиться свертывания запросов. Если запрос основан на реляционном источнике( и если можно создать одну инструкцию SELECT), вы обеспечиваете лучшую производительность обновления данных, обеспечивая свертку запросов. Если подсистема mashup Power Query по-прежнему требуется для обработки преобразований, необходимо свести к минимуму необходимую работу, особенно для больших семантических моделей (ранее известных как наборы данных).

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

  • Делегировать как можно больше обработки источнику данных: когда невозможно сложить все шаги запроса Power Query, найдите шаг, который предотвращает свертку запросов. По возможности переместите более ранние шаги в последовательности, чтобы они могли быть учтены в свертке запроса. Обратите внимание, что модуль mashup Power Query может быть достаточно умным, чтобы изменить порядок действий запроса при создании исходного запроса.

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

  • Используйте собственный SQL-запрос: когда запрос Power Query извлекает данные из реляционного источника, некоторые источники могут использовать собственный SQL-запрос. На самом деле запрос может быть любой допустимой инструкцией, включая выполнение хранимой процедуры. Если оператор создает несколько результирующих наборов, будет возвращено только первое. Параметры можно объявить в инструкции, и мы рекомендуем использовать функцию Value.NativeQuery M. Эта функция была разработана для безопасного и удобного передачи значений параметров. Важно понимать, что подсистема mashup Power Query не может сложить последующие шаги запроса, поэтому необходимо включить все (или столько) логику преобразования в машинном операторе запроса.

    При использовании собственных sql-запросов необходимо учитывать два важных соображения.

    • Для таблицы моделей DirectQuery запрос должен быть оператором SELECT, и он не может использовать общие выражения таблиц (CTEs) или хранимую процедуру.
    • Добавочное обновление не может использовать собственный SQL-запрос. Таким образом, модуль mashup Power Query будет принудительно извлекать все исходные строки, а затем применять фильтры для определения добавочных изменений.

    Важно!

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

  • Подготовка и преобразование данных в источнике. При определении того, что определенные шаги запроса Power Query не могут быть сложены, можно применить преобразования в источнике данных. Преобразования можно достичь путем записи представления базы данных, которое логически преобразует исходные данные. Или, физически подготавливая и материализируя данные, заранее запрашивая их Power BI. Реляционное хранилище данных — отличный пример подготовленных данных, обычно состоящий из предварительно интегрированных источников данных организации.

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