Типичные ошибки и производительность

Собираем главные грабли Power BI и учимся делать отчёты быстрыми.

Производительность отчёта — скорость отклика визуалов; она определяется качеством модели данных и эффективностью DAX, а не мощностью компьютера.

Почему отчёты тормозят

Медленный дашборд — частая жалоба. Пользователь кликает срез и ждёт секунды — доверие к отчёту падает. Почти всегда причина не в «слабом железе», а в трёх вещах: раздутая модель, неэффективный DAX и неправильная архитектура. Хорошая новость — всё это в руках аналитика.

Ошибка №1: неверный контекст

Самая частая логическая ошибка — числа «не те» из-за непонимания контекста. Итог по группе не равен сумме строк, «процент от итога» даёт 100%, мера в матрице ведёт себя странно. Лечение — осознанное владение контекстом фильтра/строки и CALCULATE (раздел про DAX). Если число подозрительно — первым делом спросите: «в каком контексте это считается?»

Ошибка №2: плохая модель

Плоская мега-таблица вместо звезды, связи «многие-ко-многим», двунаправленные фильтры «на всякий случай», отсутствие таблицы дат. Такая модель и тормозит, и врёт. Лечение — дисциплина звезды: факты и измерения, связи один-ко-многим, отдельный календарь, однонаправленные фильтры по умолчанию.

Ошибка №3: медленный отчёт

ТормозЛечение
Лишние столбцы/строки в моделиубрать ненужное в Power Query
Текстовые столбцы высокой уникальностине тащить (плохо сжимаются)
Тяжёлый FILTER вместо простого условияпростое равенство в CALCULATE
Много вычисляемых столбцовзаменить мерами
20+ визуалов на страницеразбить на страницы, упростить

Правила быстрого отчёта

  • Грузи только нужное. Каждый лишний столбец/строка — память и время. Узкая модель быстрее широкой.
  • Меры вместо столбцов. Вычисляемые столбцы материализуются и раздувают модель; меры почти бесплатны.
  • Простые фильтры. Условие Стол[поле]=знач быстрее, чем FILTER по всей таблице.
  • Звезда и однонаправленные связи. Предсказуемая фильтрация = меньше работы движку.

Как работает под капотом

Скорость упирается в движок VertiPaq и формульный движок DAX. VertiPaq быстр на хорошо сжатых колонках — поэтому столбцы с миллионами уникальных текстовых значений (комментарии, длинные id) убивают сжатие и память. Формульный движок страдает от итераторов по огромным таблицам и сложных FILTER. Узкая звезда + простой DAX = большая часть работы делается на сжатых колонках мгновенно, а не построчным перебором.

Частые ошибки

  • Винить компьютер. В 9 из 10 случаев тормозит модель или DAX, а не железо.
  • Тащить «сырьё» целиком. Полные таблицы с лишними полями раздувают .pbix и замедляют всё.
  • Оптимизировать вслепую. Сначала измерьте, что медленно (анализатор производительности в Desktop), потом чините.

Итог

  • Три главных греха: неверный контекст, плохая модель, медленный отчёт.
  • Скорость = узкая звезда + меры вместо столбцов + простой DAX, а не мощное железо.
  • Оптимизируйте по измерениям (анализатор производительности), а не наугад.
Проверьте себя
1. Что обычно главная причина медленного отчёта Power BI?
AСлабый компьютер пользователя
BРаздутая модель и неэффективный DAX
CЦвет визуалов
DВерсия Windows
2. Какой приём ускоряет отчёт?
AДобавить больше вычисляемых столбцов
BЗаменять вычисляемые столбцы мерами и убирать лишние поля
CВключить двунаправленные связи везде
DГрузить все таблицы целиком