Почему Power BI Desktop долго открывается?

Вы когда-нибудь сталкивались с длительным временем ожидания при открытии файла Power BI Desktop?

Почему Power BI Desktop долго открывается?

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

Краткое объяснение заключается в следующем: при открытии файла PBIX Power BI Desktop автоматически пересчитывает те вычисляемые столбцы и вычисляемые таблицы, которые зависят от изменчивой формулы.

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

  • CUSTOMDATA
  • NAMEOF
  • NOW
  • RAND
  • RANDBETWEEN
  • TODAY
  • USERCULTURE
  • USERNAME
  • USEROBJECTID
  • USERPRINCIPALNAME
  • UTCNOW
  • UTCTODAY

Приведенный выше список не 100% от всего, потому что Microsoft не предоставляет документацию о функциях, которые считаются “волатильными”. Как только будет получено подтверждение о них, информация будет интегрирована в справочник DAX.

Например, следующая вычисляемая таблица (намеренно медленная и бесполезная) всегда пересчитывается при открытии Power BI Desktop, поскольку она использует функцию TODAY:

Почему Power BI Desktop долго открывается?

Если вы откроете этот файл, включенный в загружаемый образец, вам придется ждать не менее 20 секунд – можно подумать, что есть отличный повод сменить компьютер (имеется ввиду окно загрузки с логотипом Power BI Microsoft).

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

Если мы напишем фиксированную дату вместо использования функции TODAY, тогда вычисляемая таблица больше не зависит от изменчивой формулы:

Почему Power BI Desktop долго открывается?

В этом случае время, затрачиваемое на просмотр заставки, составляет всего 5 секунд. По сути мы удалили 15 секунд ожидания. Конечно, код больше не обновляется автоматически, но цель здесь - дать вам знать о последствиях таких функций.

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

ОБНОВЛЕНИЕ 2022-05-01

После свежего обновления появилась возможность собрать все события обработки данных, включая все объекты, пересчитанные при открытии файла. Поскольку Power BI Desktop запрашивает Calculate refresh type в модели при открытии файла можно выполнить анализ уже открытого файла Power BI Desktop, выполнив следующие действия:

  • Открыть DAX Studio на ленте внешних инструментов Power BI Desktop
  • Откройте SQL Profiler с расширенной ленты в DAX Studio
  • Откройте окно PowerShell и выполните следующий скрипт, заменив номер порта после “localhost:” в соответствии с номером, показанным в DAX Studio
Почему Power BI Desktop долго открывается?
Начать дискуссию