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


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

В этой статье представлен базовый обзор обработки и преобразования запросов M в запросы источника данных.

Скрипт Power Query M

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

Совет

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

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

Примечание.

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

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

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

На предыдущем изображении выделен раздел примененных шагов, содержащий следующие действия:

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

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

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

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

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

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

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

Примечание.

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

Оценка запросов в Power Query

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

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

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

Примечание.

Хотя в этом примере демонстрируется запрос с База данных SQL в качестве источника данных, концепция применяется к запросам с источником данных или без нее.

Когда 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. Результаты, производные от предыдущей точки, загружаются в место назначения.

Примечание.

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

Обзор свертывания запросов

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

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

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

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

Однако шаги, описанные в запросе, — это шаги или преобразования, которые механизм свертывания запросов пытается оптимизировать. Затем он проверяет, можно ли выгрузить их в источник данных, а не обрабатываться с помощью подсистемы Power Query.

Внимание

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

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

  • Полное свертывание запросов: когда все преобразования запросов будут отправлены обратно в источник данных и минимальная обработка происходит в подсистеме Power Query.
  • Частичное свертывание запросов: если только несколько преобразований в запросе, а не все, можно отправить обратно в источник данных. В этом случае в источнике данных выполняется только подмножество преобразований, а остальные преобразования запросов происходят в подсистеме Power Query.
  • Нет свертывания запросов: если запрос содержит преобразования, которые не могут быть переведены на собственный язык запросов источника данных, либо потому что преобразования не поддерживаются, либо соединитель не поддерживает свертку запросов. В этом случае Power Query получает необработанные данные из источника данных и использует подсистему Power Query для достижения выходных данных, необходимых для обработки необходимых преобразований на уровне подсистемы Power Query.

Примечание.

Механизм свертывания запросов в основном доступен в соединителях для структурированных источников данных, таких как, но не ограничен, Microsoft SQL Server и веб-канал OData. На этапе оптимизации подсистема иногда может переупорядочение шагов в запросе.

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

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

Сведения о сворачивании запросов, найденных на панели "Примененные шаги ", перейдите к разделу "Свертывание запросов"