Общие сведения об оценке запросов и сложении запросов в Power Query

Power Query вычисляет запрос M, чтобы определить данные и преобразования, необходимые для его результата. Во время вычисления свёртывание запроса пытается преобразовать поддерживаемые преобразования в операции, которые может выполнять источник данных. Преобразования, которые не поддерживают свертывание, выполняются в механизме Power Query.

Что такое скрипт Power Query M?

Скрипт M, также называемый кодом M, является набором функций языка формулы Power Query M и синтаксиса, который Power Query оценивается для получения результата запроса. У каждого запроса есть M-скрипт, независимо от того, создает ли его Power Query, пишете ли вы его в расширенном редакторе или вводите в пустом запросе.

Подсказка

Скрипт M можно рассматривать как рецепт, описывающий подготовку данных.

Наиболее распространенным способом создания скрипта M является использование редактора Power Query. Например, при подключении к источнику данных, например базе данных SQL Server, обратите внимание на правой части экрана, что есть раздел, который называется примененным действием. В этом разделе показаны все шаги или преобразования, используемые в запросе. В этом смысле редактор Power Query служит интерфейсом для создания соответствующего скрипта M для необходимых преобразований и гарантирует допустимость используемого кода.

Замечание

Скрипт M используется в редакторе Power Query:

  • Отображение запроса в виде ряда шагов и позволяет создавать или изменять шаги.
  • Показать схему.

Снимок экрана: примененные шаги и представление предварительного просмотра данных.

В этом SQL Server примере область "Примененные шаги" содержит следующие действия:

  • Источник: делает подключение к источнику данных. В этом случае это подключение к базе данных SQL Server.
  • Навигация: переходит к определенной таблице в базе данных.
  • Удалены другие столбцы: выбирает, какие столбцы из таблицы следует хранить.
  • Отсортированные строки: сортирует таблицу с помощью одного или нескольких столбцов.
  • Сохранялись верхние строки: фильтрует таблицу, чтобы сохранить только некоторые строки в верхней части таблицы.

Просмотр и изменение скрипта M в Power Query

Этот набор имен шагов является удобным способом просмотра скрипта языка M, который Power Query создал для вас. Полный скрипт M можно просматривать несколькими способами. В Power Query на вкладке «Вид» выберите «Расширенный редактор». Вы также можете выбрать «Расширенный редактор» в группе «Запрос» на вкладке «Главная». В некоторых версиях Power Query также можно переключить строку формул в режим отображения скрипта запроса: перейдите на вкладку «Вид» и в группе «Макет» выберите «Представление скрипта»>«Скрипт запроса».

Снимок экрана: полный скрипт M и соответствующие имена примененных шагов.

Большинство имен, которые вы найдете в области примененных шагов , также используются в скрипте M. Вы назовете шаги запроса с помощью идентификаторов на языке M. Иногда в языке M вокруг имен шагов отображаются дополнительные символы, но в списке примененных шагов эти символы не показываются. Например #"Kept top rows", классифицируется как идентификатор кавычки из-за этих дополнительных символов. Идентификатор в кавычках позволяет использовать любую последовательность из нуля или более символов Юникода в качестве идентификатора, включая ключевые слова, пробельные символы, комментарии, операторы и знаки пунктуации. Дополнительные сведения об идентификаторах языка M см. в лексической структуре.

Все изменения, внесенные в запрос через редактор Power Query, автоматически обновляют скрипт M для запроса. Например, если изменить имя шага Сохраненные первые строки на Первые 20 строк, это имя также изменится в представлении скрипта запроса.

Снимок экрана: имя примененного шага изменено на 20 верхних строк, что также обновляет скрипт M.

Хотя мы рекомендуем использовать редактор Power Query для создания всего или большей части скрипта M, вы можете вручную добавлять или изменять фрагменты скрипта M. Дополнительные сведения см. в справочнике по языку M.

В этой статье скрипт M ссылается на код Power Query M в запросе, к которому можно получить доступ через расширенный редактор или представление скрипта запроса в строке формул.

Как Power Query оценивает запрос M

Power Query вычисляет скрипт M, определяя необходимые выходные данные и способ его создания. Для запросов, использующих внешний источник данных, оценка включает запрос данных из источника, обработку преобразований, выполняемых в подсистеме Power Query, и загрузку результата в место назначения.

На следующей схеме рассматривается процесс, который возникает при оценке запроса в Power Query.

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

  1. Скрипт M, найденный в расширенном редакторе, отправляется в подсистему Power Query. Также включаются другие важные сведения, такие как учетные данные и уровни конфиденциальности источника данных.
  2. Power Query определяет, какие данные необходимо извлечь из источника данных и отправить запрос в источник данных.
  3. Источник данных отвечает на запрос от Power Query путем передачи запрошенных данных в Power Query.
  4. Power Query получает входящие данные из источника данных и выполняет любые преобразования с помощью подсистемы Power Query при необходимости.
  5. Power Query загружает преобразованный результат в место назначения.

Замечание

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

Как свертывание запросов оптимизирует оценку запросов

Когда Power Query считывает скрипт M, он запускает скрипт с помощью процесса оптимизации для более эффективной оценки запроса. В этом процессе определяется, какие шаги (преобразования) из запроса можно выгрузить в источник данных. Он также определяет, какие другие шаги необходимо оценить с помощью подсистемы Power Query.

Этот процесс оптимизации называется свертыванием запросов. Свертывание запросов преобразует поддерживаемые преобразования M в операции, которые источник данных может выполнять. Power Query пытается выполнить как можно больше запроса в источнике данных и оценивает все оставшиеся преобразования в подсистеме Power Query.

Это важно

Следуют все правила из языка формул Power Query M (также известного как язык M). В частности, отложенная оценка играет важную роль во время процесса оптимизации. В этом процессе Power Query понимает, какие именно преобразования из вашего запроса подлежат оценке. Power Query также понимает, какие другие преобразования не нужно оценивать, так как они не нужны в выходных данных запроса.

Кроме того, при использовании нескольких источников при оценке запроса учитывается уровень конфиденциальности данных каждого источника данных. Дополнительные сведения: за кулисами брандмауэра конфиденциальности данных

На следующей схеме показаны шаги, которые происходят в этом процессе оптимизации.

Схема, показывающая процесс оптимизации во время оценки запросов.

  1. Скрипт M, найденный в расширенном редакторе, отправляется в подсистему Power Query. Также предоставляются другие важные сведения, такие как учетные данные и уровни конфиденциальности источника данных.
  2. Механизм свертывания запросов отправляет запросы метаданных для определения возможностей источника данных, схем таблиц, связей между таблицами в источнике данных и других метаданных.
  3. На основе получаемых метаданных механизм свертывания запросов определяет, какие сведения необходимо извлечь из источника данных и какие преобразования должны происходить внутри подсистемы Power Query. При необходимости он отправляет инструкции двум другим компонентам, которые извлекают данные из источника данных и преобразуют входящие данные в подсистеме Power Query.
  4. Когда внутренние компоненты Power Query получают инструкции, Power Query отправляет запрос к источнику данных с помощью запроса источника данных.
  5. Источник данных получает запрос от Power Query и передает данные в подсистему Power Query.
  6. После того как данные хранятся внутри Power Query, подсистема преобразования внутри Power Query (также известная как подсистема mashup) выполняет преобразования, которые не удалось сложить или выгрузить в источник данных.
  7. Power Query загружает преобразованный результат в место назначения.

Замечание

В зависимости от преобразований и источников данных, используемых в скрипте M, Power Query определяет, следует ли передавать или буферивать входящие данные.

Что делает свертка запросов в Power Query

Цель свертывания запроса — передать как можно больше вычислений запроса на источник данных, который сам может выполнять преобразования запроса.

Механизм свертывания запросов выполняет эту задачу путем перевода скрипта M на язык, который может интерпретировать и выполнять источник данных. Затем она отправляет оценку в источник данных и отправляет результат этой оценки в Power Query.

Эта операция часто обеспечивает более быстрое выполнение запроса, чем извлечение всех необходимых данных из источника данных и выполнение всех преобразований, необходимых в подсистеме Power Query.

При использовании интерфейса get data experience Power Query описывает процесс, который в конечном итоге позволяет подключаться к источнику данных. При этом Power Query использует ряд функций на языке M, классифицированных как accessing data functions. Эти конкретные функции используют механизмы и протоколы для подключения к источнику данных с помощью языка, который может понять источник данных.

При преобразованиях, следующих за функцией источника данных, механизм свертывания запросов проверяет, можно ли перенести их выполнение в источник данных вместо обработки в ядре Power Query.

Это важно

Функции источника данных, обычно показанные как исходный шаг запроса, запрашивают данные в источнике данных на собственном языке. Для преобразований, выполняемых после функции источника данных, Power Query пытается выполнить свёртывание запроса только в том случае, если соединитель и преобразования поддерживают его. Механизм может переводить и объединять поддерживаемые преобразования в один запрос источника данных.

Результаты свертывания запросов в Power Query

В зависимости от структуры запроса может быть три возможных результата в механизме свертывания запросов:

Результат свёртывания запросов Обработка в источнике данных Обработка в подсистеме Power Query
Полное свертывание запроса Источник данных обрабатывает все преобразования запросов. Минимальная обработка выполняется в подсистеме Power Query.
Частичное свертывание запросов Источник данных обрабатывает преобразования, которые Power Query могут переводить на собственный язык запросов. Подсистема Power Query обрабатывает оставшиеся преобразования.
Нет сворачивания запросов Источник данных возвращает запрошенные исходные данные без обработки преобразований запросов. Модуль Power Query обрабатывает все необходимые преобразования.

Источники данных, поддерживающие свертывание запросов

Поддержка свертывания запросов зависит от соединителя, источника данных и преобразований в запросе. Соединители для структурированных источников данных с возможностями обработки запросов, такие как SQL Server и OData Feed, обычно поддерживают свертывание запросов. Источники без обработчика запросов, например CSV и Excel файлов, не поддерживают свертку запросов.

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

Проверьте свертывание запросов в Power Query Online

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

Если доступно, используйте Просмотреть собственный запрос или Просмотреть запрос источника данных, чтобы изучить запрос, который Power Query отправляет в источник данных. Доступность зависит от соединителя.