Индикаторы свертывания запросов

Примечание.

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

Индикаторы свертывания запросов помогают понять шаги, которые сворачивать или не сворачивать.

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

Примечание.

Функция свертывания запросов доступна только для Power Query Online.

Интерпретация свертывания запросов диагностика

При проверке индикатора свертывания запросов рядом с шагом важно понимать, что состояние диагностики не является последовательным. Другими словами, индикатор для этого шага описывает, является ли запрос в целом, вплоть до этой точки, сворачивать или нет. Если у вас есть индикатор, показывающий, что запрос не сворачиваться, за которым отображается индикатор свертывания, это означает, что запрос до этой точки сворачиваться.

Эта интерпретация работает даже с простым запросом к источнику SQL. Например, используя пример базы данных AdventureWorks, подключитесь к таблице Production.Product и загрузите данные. Загрузка этого примера с помощью навигатора Power Query дает следующий запрос:

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data]
in
  Navigation

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

Снимок экрана: этапы исходной и навигации в области свертывания индикаторов.

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

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

Изменив предыдущий пример, можно дать преобразование, которое никогда не свертывается— прописная запись каждого слова.

let
  Source = Sql.Database("ServerName", "AdventureWorks"),
  Navigation = Source{[Schema = "Production", Item = "Product"]}[Data],
  #"Capitalized each word" = Table.TransformColumns(Navigation, {{"Name", each Text.Proper(_), type text}})
in
  #"Capitalized each word"

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

Снимок экрана: шаг

Индикаторы диагностика шага

Индикаторы свертывания запросов используют базовый план запроса и требуют, чтобы он мог получить сведения о запросе, чтобы сообщить о нем. В настоящее время план запроса поддерживает только таблицы, поэтому некоторые случаи (списки, записи, примитивы) не сообщают как свертывания или нет. Аналогичным образом, постоянные таблицы сообщают как непрозрачные.

Индикатор Icon Description
Складной Индикатор свертывания сообщает, что запрос до этого шага вычисляется источником данных.
Не сворачивать Индикатор не свертывания сообщает, что некоторые части запроса до этого шага оцениваются за пределами источника данных. Вы можете сравнить его с последним свертывания индикатора, если есть один, чтобы узнать, можно ли изменить порядок запроса, чтобы быть более производительным.
Может свернуть Могут сложить индикаторы редко. Они означают, что запрос "может" сложить. Они указывают на то, что свертывание или не свертывание определяется во время выполнения, при извлечении результатов из запроса и что план запроса является динамическим. Эти индикаторы, скорее всего, отображаются только с подключениями ODBC или OData.
Непрозрачные Непрозрачные индикаторы свидетельствуют о том, что полученный план запроса не является неуклюжим по какой-то причине. Обычно это означает, что существует истинная "константная" таблица или что преобразование или соединитель не поддерживается средством индикаторов и плана запросов.
Unknown Неизвестные индикаторы представляют отсутствие плана запроса из-за ошибки или попытки выполнить оценку плана запроса на нечто отличное от таблицы (например, записи, списка или примитива).

Пример анализа

Для примера анализа сначала подключитесь к таблице Production.Product в Adventure Works (SQL). Начальная загрузка, аналогичная первоначальному примеру, выглядит следующим образом.

Снимок экрана: индикаторы начального шага для загрузки таблицы Product.

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

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

Добавление шага, который не сворачивать, отображает другой индикатор. Например, прописная буква каждого слова никогда не сворачиваться. Индикатор изменяется, показывающий, что по состоянию на этом шаге она остановлена свертывания. Как упоминание ранее, предыдущие шаги по-прежнему свернуты.

Снимок экрана, на котором показано, как сворачивать шаг

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

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

Тем не менее, если удалить столбец, к которому применена заглавная буква, чтобы оптимизированный план запросов смог сложить все еще раз, вы получите результат, как показано на следующем рисунке. Тем не менее, что-то вроде этого редко. На этом изображении показано, как это не только порядок шагов, но и фактические преобразования, которые применяются.

Снимок экрана: удаление проблемного столбца позволяет сложить вещи без удаления шага.