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

Примечание.

Прежде чем читать эту статью, рекомендуется ознакомиться с обзором оценки запросов и свертывания запросов в 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

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

Source and Navigation steps in Folding Indicator pane.

В этом примере начальные шаги не могут быть подтверждены свертыванием (неуклюзивным), но последний шаг, созданный при загрузке данных, изначально сворачивается. Как обрабатываются первые шаги (источник, а иногда и другие действия навигации ) зависят от соединителя. Например, при использовании 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"

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

Source, Navigation, and Capitalize Each Word steps in Folding Indicator pane.

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

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

Индикатор Icon Description
Складной Folding indicator for 'will fold'. Индикатор свертывания сообщает, что запрос до этого шага будет оцениваться источником данных.
Не сворачивать Folding indicator for 'not folding'. Индикатор без свертывания сообщает, что некоторые части запроса до этого шага будут оцениваться за пределами источника данных. Вы можете сравнить его с последним свертывания индикатора, если есть один, чтобы узнать, можно ли изменить порядок запроса, чтобы быть более производительным.
Может свернуть Folding indicator for 'might fold'. Могут сложить индикаторы редко. Они означают, что запрос "может" сложить. Они указывают на то, что свертывание или не свертывание будет определяться во время выполнения при извлечении результатов из запроса и что план запроса является динамическим. Эти индикаторы, скорее всего, будут отображаться только с подключениями ODBC или OData.
Непрозрачные Folding indicator for 'opaque, inconclusive folding'. Непрозрачные индикаторы свидетельствуют о том, что полученный план запроса не является неуклюжим по какой-то причине. Обычно это означает, что существует истинная "константная" таблица или что преобразование или соединитель не поддерживается средством индикаторов и плана запросов.
Unknown Folding indicator for 'no query plan'. Неизвестные индикаторы представляют отсутствие плана запроса из-за ошибки или попытки выполнить оценку плана запроса на нечто отличное от таблицы (например, записи, списка или примитива).

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

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

Initial step indicators for loading the Product table.

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

Adding a remove column step to the previous query, extending the green folding indicator line.

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

Adding a Capitalize Each Word step to break folding.

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

Adding more steps that don't fold.

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

Showing how removing the problematic column allows things to fold without removing the step.