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


Устранение неполадок моделей DirectQuery в Power BI Desktop

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

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

Если вы не найдете проблемы с производительностью в Power BI Desktop, вы можете сосредоточиться на изучении особенностей отчета в служба Power BI.

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

Анализатор производительности

Анализатор производительности — это полезное средство для выявления проблем с производительностью во время процесса устранения неполадок. Если вы можете определить один вялый визуальный элемент на странице в Power BI Desktop, вы можете использовать Анализатор производительности, чтобы определить, какие запросы Power BI Desktop отправляет в базовый источник.

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

Даже без трассировки из источника можно просматривать отправленные запросы Power BI вместе с временем выполнения.

Примечание.

Для источников на основе SQL DirectQuery Анализатор производительности отображаются запросы только для источников данных SQL Server, Oracle и Teradata.

Файл трассировки

По умолчанию Power BI Desktop регистрирует события во время данного сеанса в файл трассировки с именем FlightRecorderCurrent.trc. Файл трассировки текущего сеанса можно найти в папке AppData для текущего пользователя на сайте <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces.

Следующие источники данных DirectQuery записывают все запросы, которые Power BI отправляет в файл трассировки. Журнал может поддерживать другие источники DirectQuery в будущем.

  • SQL Server
  • База данных SQL Azure
  • Azure Synapse Analytics (прежнее название — хранилище данных SQL)
  • Oracle
  • Teradata
  • SAP HANA

Чтобы легко добраться до папки файла трассировки в Power BI Desktop, выберите "Параметры файла>" и "Параметры>" и выберите "Диагностика".

Screenshot of the Diagnostics section of the Power BI Desktop Options screen with the link to open the crash dump/traces folder.

В разделе "Коллекция аварийного дампа" выберите ссылку "Открыть аварийный дамб/трассировки", чтобы открыть папку< User>\AppData\Local\Microsoft\Power BI Desktop\Traces.

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

Каждая папка AnalysisServicesWorkspace включает вложенную папку Data , содержащую файл трассировки FlightRecorderCurrent.trc для текущего сеанса Power BI. Эта папка исчезает при завершении связанного сеанса Power BI Desktop.

Файлы трассировки можно открыть с помощью средства профилировщика SQL Server, которое можно получить в рамках бесплатного скачивания SQL Server Management Studio (SSMS). После скачивания и установки SQL Server Management Studio откройте SQL Server Profiler.

Screenshot of SQL Server Profiler window with no highlighted traces.

Чтобы открыть файл трассировки, выполните приведенные действия.

  1. В SQL Server Profiler выберите файл "Открыть>файл> трассировки".

  2. Перейдите к файлу трассировки или введите путь к текущему сеансу Power BI, например <User>\AppData\Local\Microsoft\Power BI Desktop\AnalysisServicesWorkspaces\AnalysisServicesWorkspace2058279583\Data, и откройте FlightRecorderCurrent.trc.

Sql Server Profiler отображает все события из текущего сеанса. На следующем снимках экрана выделена группа событий для запроса. Каждая группа запросов имеет следующие события:

  • Событие Query Begin и Query End событие, представляющее начало и конец запроса DAX, созданного путем изменения визуального элемента или фильтра в пользовательском интерфейсе Power BI, или от фильтрации или преобразования данных в Редактор Power Query.

  • Одна или несколько пар DirectQuery Begin и DirectQuery End событий, представляющих запросы, отправленные в базовый источник данных в рамках оценки запроса DAX.

Screenshot of SQL Server Profiler with highlighted Query Begin and Query End events.

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

Следующие столбцы также представляют интерес:

  • TextData: текстовое описание события. Для Query Begin и Query End событий подробные сведения — это запрос DAX. Сведения DirectQuery Begin и DirectQuery End события — это SQL-запрос, отправляемый в базовый источник. Значение TextData для выбранного события в настоящее время также отображается в области в нижней части экрана.
  • EndTime: время завершения события.
  • Длительность: длительность( в миллисекундах) требуется для выполнения запроса DAX или SQL.
  • Ошибка: произошла ли ошибка, в этом случае событие также отображается красным цветом.

Предыдущее изображение сужает некоторые из менее интересных столбцов, поэтому вы можете увидеть более интересные столбцы.

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

  1. Откройте один сеанс Power BI Desktop, чтобы избежать путаницы в нескольких папках рабочей области.

  2. Выполните набор действий, интересующих Power BI Desktop. Включите несколько действий, чтобы убедиться, что события, интересующие вас, сбрасывают данные в файл трассировки.

  3. Откройте SQL Server Profiler и проверьте трассировку. Помните, что закрытие Power BI Desktop удаляет файл трассировки. Кроме того, дальнейшие действия в Power BI Desktop не отображаются сразу. Чтобы увидеть новые события, необходимо закрыть и повторно открыть файл трассировки.

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

Формат запроса и вложенных запросов

Общий формат запросов Power BI Desktop — использовать вложенные запросы для каждой таблицы моделей, на которые ссылается ссылка. Запрос Редактор Power Query определяет вложенные запросы. Например, предположим, что в реляционной базе данных SQL Server есть следующие таблицы TPC-DS :

Screenshot of a Power BI Desktop model view diagram that shows the related Item, Web_Sales, Customer and Date-dim TPC-DS tables.

В визуальном элементе Power BI следующее выражение определяет меру SalesAmount :


SalesAmount = SUMX(Web_Sales, [ws_sales_price] * [ws_quantity])

Screenshot of a Power BI Desktop stacked column chart that displays sales amount by category.

Обновление визуального элемента создает запрос T-SQL на следующем рисунке. Для таблиц моделей и Date_dim таблиц моделей существует три вложенных Web_SalesItemзапроса. Каждый запрос возвращает все столбцы таблицы модели, несмотря на то, что визуальные ссылки ссылаются только на четыре столбца.

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

Одна из причин, по которой Power BI использует этот шаблон, позволяет определить запрос Power Query для использования конкретной инструкции запроса. Power BI использует запрос, как указано, без попытки перезаписать его. Этот шаблон ограничивает использование инструкций запросов, использующих общие выражения таблиц (CTEs) и хранимые процедуры. Эти инструкции нельзя использовать в вложенных запросах.

Screenshot of a T-SQL query that shows embedded subqueries, one for each model table.

Производительность шлюза

Сведения об устранении неполадок с производительностью шлюза см. в статье "Устранение неполадок шлюзов — Power BI".

Дополнительные сведения о DirectQuery проверка следующих ресурсов:

Вопросы? Задайте их в сообществе Power BI.