Поймёте, что именно меняет CALCULATE, соберёте меру на понятном примере и сможете проверить, почему итог в карточке отличается от ожиданий.
В Power BI мера всегда считается внутри текущего контекста: страницы, строки таблицы, выбранного месяца, товара и других фильтров. CALCULATE позволяет временно изменить эти условия. Сама функция не «считает продажи». Она берёт выражение, меняет набор действующих фильтров и уже после этого вычисляет результат. Вот и вся идея. Сложность начинается, когда фильтры накладываются друг на друга, а автор меры уже не помнит, какой из них кого заменил (знакомо).
Что это значит простыми словами
Представьте отчёт по продажам за март. В строке товара уже действуют два условия: март и конкретный товар. Мера CALCULATE([Выручка], Канал[Тип] = "Онлайн") сохраняет месяц и товар, но добавляет условие по каналу. Если фильтр по тому же столбцу уже был, новый фильтр обычно его заменит. Если нужно пересечение, применяют KEEPFILTERS. Поэтому CALCULATE лучше читать справа налево: сначала подготовили фильтры, затем посчитали выражение.
Формула и логика расчёта
Базовая запись: CALCULATE(выражение, фильтр 1, фильтр 2). Выражением обычно служит готовая мера. Фильтром может быть логическое условие, таблица или функция-модификатор вроде REMOVEFILTERS. Ещё одна важная роль CALCULATE — переход контекста: в строковом контексте она превращает текущую строку в фильтр. Для обычной меры внутри визуала это часто происходит незаметно, а в вычисляемых столбцах и итераторах уже имеет значение.
Подробный пример с числами

В таблице 1 000 заказов на 12 млн рублей. Из них 7,2 млн пришли из онлайна, 4,8 млн — из офлайна. Мера [Выручка] возвращает 12 млн. Создаём меру Онлайн = CALCULATE([Выручка], Канал[Тип] = "Онлайн") и получаем 7,2 млн. Доля онлайна = DIVIDE([Онлайн], [Выручка]) = 60%. Если пользователь выберет только апрель, обе меры пересчитаются для апреля. Если внутри CALCULATE убрать фильтр даты, числитель станет годовым, а знаменатель останется апрельским — процент получится технически правильным, но управленчески странным.
Проверять меру надо не по одной красивой карточке. Положите рядом исходную выручку, отфильтрованную выручку, дату, канал и товар. Если сумма по строкам не объясняет общий итог, откройте модель связей и посмотрите, какой фильтр реально доходит до таблицы фактов.
Как использовать в бизнесе
В бизнес-отчётах CALCULATE помогает закрепить единую методику: продажи без возвратов, выручка выбранного сегмента, факт на последнюю доступную дату, доля категории от общего итога. Сначала мы словами описываем правило, затем переносим его в меру. Если правило нельзя объяснить собственнику одним абзацем, формулу рано прятать в модель.
Когда применять этот подход
CALCULATE нужна, когда базовая мера остаётся прежней, а условия расчёта меняются: другой канал, фиксированный статус, очищенный фильтр или сравнение с общей базой. Если задача требует изменить сами строки источника, объединить таблицы или исправить справочник, лучше сделать это раньше — в источнике или Power Query. DAX не должен превращаться в склад исправлений данных.
Как проверить результат

Для контроля соберите матрицу: по строкам товары, по столбцам месяцы, в значениях базовая мера и версия с CALCULATE. Добавьте срез канала. Выберите один товар и месяц, выгрузите его операции и пересчитайте сумму вручную. Затем поменяйте только один фильтр. Если одновременно изменилось несколько условий, найти причину будет намного сложнее.
Как собрать расчёт по шагам
1. Начните с обычной меры
Создайте и отдельно проверьте базовое выражение, например сумму выручки. Не собирайте всю логику в одной строке.
2. Назовите изменяемый фильтр
Запишите словами, какой столбец должен быть добавлен, заменён или очищен.
3. Соберите CALCULATE
Добавляйте фильтры по одному и после каждого смотрите результат в простой таблице.
4. Проверьте пересечения
Сравните меру без фильтра, с одним фильтром и с несколькими. Так видно, где условие заменилось.
5. Зафиксируйте методику
Оставьте короткое описание меры рядом со словарём показателей и владельцем расчёта.
Ограничения и типичные ошибки
- Писать CALCULATE вокруг каждой меры «на всякий случай».
- Удалять фильтр даты и сравнивать годовой числитель с месячным знаменателем.
- Использовать FILTER для простого условия по одному столбцу без необходимости.
- Проверять только общий итог и не смотреть строки, где работает контекст.
После изменения модели проверьте контрольный набор вручную и запишите дату проверки. Если источник, связь или определение показателя изменились, старый результат уже нельзя молча сравнивать с новым.
Как я делаю это в проектах
В проектах я сначала делаю диагностическую страницу. На ней есть базовая мера, версия с CALCULATE и сами поля фильтра. Это не самая красивая страница отчёта, зато она быстро показывает, почему цифра изменилась. После проверки меру переносим в рабочий дашборд, а диагностическую страницу оставляем скрытой для поддержки. Когда маркетолог спрашивает, почему онлайн за апрель не совпал с CRM, мы открываем не спор, а условия расчёта.
Что сделать прямо сейчас
Возьмите одну меру с CALCULATE и письменно перечислите все фильтры, которые действуют до и после её вычисления.
Если хотите собрать расчёт вместе с моделью и нормальной проверкой данных, можно обсудить задачу с ФАНалитикой. Начнём с одного показателя и доведём его до решения, а не до ещё одной формулы в коллекции.






