Почему мой запрос выполняется несколько раз?

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

При возникновении нескольких запросов

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

Подключение конструктор

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

Несколько запросов, ссылающихся на один источник данных

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

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

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

Складной

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

Загрузка в модель Power BI Desktop

В Power BI Desktop службы Analysis Services (AS) обновляют данные с помощью двух вычислений: один для получения схемы, которую AS выполняет, запрашивая нулевые строки и одну для получения данных. Если вычисление схемы нулевой строки требует получения данных, то могут возникнуть повторяющиеся запросы источника данных.

Анализ конфиденциальности данных

Конфиденциальность данных выполняет собственные оценки каждого запроса, чтобы определить, являются ли запросы безопасными для выполнения вместе. Эта оценка иногда может вызвать несколько запросов к источнику данных. Признак того, что заданный запрос поступает из анализа конфиденциальности данных, заключается в том, что он будет иметь условие TOP 1000 (хотя не все источники данных поддерживают такое условие). Как правило, отключение конфиденциальности данных , если это приемлемо, устранит "TOP 1000" или другие запросы, связанные с конфиденциальностью данных во время обновления. Дополнительные сведения. Отключение брандмауэра конфиденциальности данных

Скачивание фоновых данных (также известное как фоновый анализ)

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

Другие фоновые задачи редактора Power Query

Различные фоновые задачи редактора Power Query также могут активировать дополнительные запросы источника данных (например, анализ свертывания запросов, профилирование столбцов, автоматическое обновление предварительной версии 1000 строк, которая активирует Power Query после загрузки результатов в Excel и т. д.).

Изоляция нескольких запросов

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

  • В редакторе Power Query
  • Отключение брандмауэра
  • При отключении фонового анализа
  • При профилировании столбцов и других фоновых задачах отключены
  • [Необязательно] Выполнение Table.Buffer

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

В следующих разделах данные шаги описаны более подробно.

Настройка редактора Power Query

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

Отключение брандмауэра конфиденциальности данных

Следующим шагом является отключение брандмауэра конфиденциальности данных. На этом шаге предполагается, что вы не обеспокоены утечкой данных между источниками, поэтому отключение брандмауэра конфиденциальности данных можно сделать с помощью параметров уровня конфиденциальности Always Ignore Privacy Level, описанных в разделе "Настройка быстрого объединения" в Excel или с помощью уровня "Игнорировать уровни конфиденциальности" и потенциально повысить производительность, описанную на уровнях конфиденциальности Power BI Desktop в Power BI Desktop.

Перед возобновлением нормального тестирования обязательно отмените этот шаг.

Отключение фонового анализа

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

Изображение параметров запроса в Excel с отключенным фоновым анализом.

Буферизация таблицы

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

  1. В строке формул редактора Power Query нажмите кнопку fx , чтобы добавить новый шаг.

    Изображение с выделенным расположением кнопки fx.

  2. В строке формул введите имя предыдущего шага с помощью Table.Buffer(<предыдущее имя шага идет здесь>). Например, если предыдущий шаг был назван Source, откроется = Sourceстрока формул. Измените шаг в строке формул, чтобы сказать = Table.Buffer(Source).

Дополнительные сведения: Table.Buffer

Запуск теста

Чтобы выполнить тест, выполните обновление в редакторе Power Query.

Изображение с выделенным расположением кнопки обновления.