Оптимизация модели DirectQuery с хранилищем на уровне таблиц

Завершено

DirectQuery — это один из способов получения данных в Power BI Desktop. Метод DirectQuery использует подключение непосредственно к данным в исходном репозитории из Power BI Desktop. Это альтернатива импорту данных в Power BI Desktop.

Снимок экрана показывает, как получать данные с помощью DirectQuery.

При использовании метода DirectQuery общий комфорт работы пользователя в значительной степени зависит от производительности базового источника данных. Большое время отклика на запросы приводит к негативному опыту пользователя, и в наихудших сценариях может привести к истечению времени ожидания. Кроме того, число пользователей, одновременно открывающих отчеты, оказывает влияние на нагрузку, размещенную в источнике данных. Например, если в отчете имеется 20 визуальных элементов и 10 пользователей используют этот отчет, то в источнике данных будет создано не менее 200 запросов, так как каждый визуальный элемент активирует один или несколько запросов.

К сожалению, производительность модели Power BI зависит не только от производительности базового источника данных, но и от других неконтролируемых факторов, таких как:

  • Задержка в сети — быстрые сети возвращают данные быстрее.

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

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

Более подробные сведения см. в статье Руководство по использованию модели DirectQuery в Power BI Desktop.

Последствия использования DirectQuery

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

  • DirectQuery подходит в случаях, когда требуется частое изменение данных и создание отчетов практически в реальном времени.

  • DirectQuery может обрабатывать большие данные без необходимости предварительного агрегирования.

  • DirectQuery применяет ограничения независимости данных в соответствии с требованиями законодательства.

  • DirectQuery можно использовать с многомерным источником данных, содержащим такие меры, как SAP Business Warehouse (BW).

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

Поведение подключений DirectQuery

При использовании DirectQuery для подключения к данным в Power BI Desktop это подключение выполняется следующим образом.

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

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

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

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

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

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

Ограничения подключений DirectQuery

Использование DirectQuery может иметь негативные последствия. Ограничения зависят от конкретного используемого источника данных. Следует учитывать следующие моменты.

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

  • Безопасность — при использовании нескольких источников данных в модели DirectQuery важно понимать то, как перемещаются данные между базовыми источниками данных, а также соответствующие последствия с точки зрения безопасности. Также нужно определить, применимы ли правила безопасности к данным в базовом источнике, так как в Power BI эти данные может просмотреть каждый пользователь.

  • Преобразование данных — по сравнению с импортированными данными данные, источником которых является DirectQuery, имеют ограничения, когда дело касается применения методов преобразования данных в Редакторе Power Query. Например, при подключении к источнику OLAP, такому как SAP BW, вы не сможете выполнять никаких преобразований, при этом вся внешняя модель берется из источника данных. Если вам нужно выполнить преобразование данных, потребуется сделать это в базовом источнике данных.

  • Моделирование — некоторые возможности моделирования, поддерживаемые для импортированных данных, недоступны или ограничены при использовании DirectQuery.

  • Отчеты — почти все возможности ведения отчетов, доступные для импортированных данных, также поддерживаются и для моделей DirectQuery при условии, что базовый источник обеспечивает подходящий уровень производительности. Однако при публикации отчета в службе Power BI функции "Краткая аналитика" и "Вопросы и ответы" не поддерживаются. Кроме того, использование функции просмотра в Excel, скорее всего, приведет к снижению производительности.

Более подробные сведения см. в разделе Ограничения использования DirectQuery.

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

Оптимизация производительности

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

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

Оптимизация данных в Power BI Desktop

Оптимизировав источник данных в максимальной возможной степени, вы можете выполнить дальнейшие действия в Power BI Desktop с помощью Анализатора производительности, в котором можно изолировать запросы для проверки планов запроса.

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

При оптимизации модели DirectQuery не требуется применять особый подход — для настройки данных из источника DirectQuery можно применить те же методы оптимизации, которые использовались для импортированных данных. Например, можно уменьшить количество визуальных элементов на странице отчета или уменьшить количество полей, используемых в визуальном элементе. Также можно удалить ненужные столбцы и строки.

Более подробные инструкции по оптимизации запросов DirectQuery: Руководство по использованию модели DirectQuery в Power BI Desktop и Рекомендации по успешному использованию DirectQuery.

Оптимизация базового источника данных (подключенная база данных)

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

Рассмотрите возможность использования следующих стандартных рекомендаций для базы данных, которые применимы в большинстве случаев:

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

  • Проверьте индексы и убедитесь, что текущее индексирование является верным. Если требуется создать новые индексы, убедитесь, что они подходят.

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

Настройка возможностей для сокращения числа запросов

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

В этом примере вы изменяете параметры по умолчанию, чтобы применить к модели доступные возможности по сокращению объема данных. Чтобы получить доступ к параметрам, выберите Параметры файла>и параметры>Параметры, прокрутите страницу вниз, а затем выберите параметр Сокращение запросов .

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

  • Уменьшить число отправляемых запросов — по умолчанию каждый визуальный элемент взаимодействует с любым другим визуальным объектом. При установке этого флажка такое взаимодействие по умолчанию отключается. Затем при необходимости можно выбрать, какие визуальные элементы взаимодействуют друг с другом, используя функцию Изменить взаимодействия.

  • Срезы — по умолчанию выбран параметр Применять изменения срезов немедленно. Чтобы заставить пользователей отчетов вручную применять изменения срезов, выберите параметр Добавить к каждому срезу кнопку "Применить" для внесения изменений по готовности.

  • Фильтры — по умолчанию выбран параметр Instantly apply basic filter changes (Применять изменения основных фильтров немедленно). Чтобы заставить пользователей отчета вручную применять изменения фильтра, выберите один из альтернативных параметров:

    • Add an apply button to all basic filters to apply changes when you're ready (Добавление кнопок "Применить" ко всем основным фильтрам для применения изменений по готовности)

    • Добавление на панель фильтра одной кнопки "Применить" для применения всех изменений сразу (предварительная версия)

Доступ к параметрам для сокращения числа запросов