Типичные ошибки и производительность
Собираем главные грабли 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, а не мощное железо.
- Оптимизируйте по измерениям (анализатор производительности), а не наугад.