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


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

При обновлении в Power Query многое делается в фоновом режиме, чтобы обеспечить плавное взаимодействие с пользователем, а также эффективно и безопасно выполнять запросы. Однако в некоторых случаях можно заметить, что при обновлении данных несколько запросов источника данных активируются 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.

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