DIVIDE в DAX: безопасное деление без странных процентов

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

Павел безопасно разделяет поток, а защитный клапан спокойно останавливает пустую ветку
СУТЬ БЕЗ ШУМА

Самое главное — за секунды

Содержание статьи

Поймёте, зачем нужна DIVIDE, выберете результат при нулевом знаменателе и посчитаете показатель так, чтобы пустота не маскировалась под хороший ноль.

Конверсия, маржа, доля, средний чек — везде есть деление. В реальных данных знаменатель иногда равен нулю или отсутствует: в новом канале ещё не было визитов, товар не продавался, подразделение только открылось. Обычный оператор деления требует отдельной проверки. DIVIDE делает её внутри функции и возвращает BLANK либо заданный альтернативный результат. Главное — решить, что этот результат означает для бизнеса.

Что это значит простыми словами

Запись DIVIDE(числитель, знаменатель) вернёт пустое значение, если знаменатель равен нулю или BLANK. Третий аргумент позволяет задать альтернативу, например 0. Но ноль и отсутствие базы — разные ситуации. Конверсия 0% означает, что визиты были, а покупок не было. Пустая конверсия означает, что делить пока не на что. Если заменить обе ситуации нулём, отчёт станет аккуратнее, но смысл потеряется.

Формула и логика расчёта

Формула конверсии: DIVIDE([Заказы], [Визиты]). Для валовой маржи: DIVIDE([Валовая прибыль], [Выручка]). Альтернативный результат должен быть константой. Microsoft рекомендует DIVIDE, когда знаменатель может быть нулём или пустым: функция оптимизирована для такой проверки и читается проще конструкции IF вокруг деления.

Подробный пример с числами

Павел запускает безопасное деление, которое не выдаёт ложный результат при пустом знаменателе

Канал А получил 1 000 визитов и 40 заказов. Конверсия — 4%. Канал Б получил 500 визитов и 0 заказов: конверсия — 0%. Канал В ещё не запущен, визитов и заказов нет. DIVIDE вернёт BLANK. Если поставить альтернативу 0, каналы Б и В будут выглядеть одинаково, хотя по Б уже есть плохой результат, а по В данных ещё нет. В управленческой таблице лучше оставить пустоту и рядом показать статус запуска.

Проверьте четыре сценария: обычный знаменатель, ноль, BLANK и отрицательное значение, если оно возможно. Посмотрите не только карточку, но и итог таблицы. Иногда общая конверсия должна считаться как сумма заказов, делённая на сумму визитов, а не как среднее процентов строк.

Как использовать в бизнесе

Правильная обработка пустых значений влияет на решения. Если новый продукт получает нулевую маржу вместо отметки «нет продаж», собственник может решить, что продукт работает плохо. Если подразделение без плана получает 0% выполнения, оно смешивается с тем, у кого план был и не выполнен. Я заранее фиксирую три состояния: есть база и результат, есть база без результата, базы ещё нет.

Когда применять этот подход

DIVIDE стоит использовать почти во всех мерах, где знаменатель меняется вместе с фильтрами пользователя. Обычный оператор уместен, когда знаменатель — гарантированная константа, например деление секунд на 60. Для бизнес-метрик гарантии встречаются редко: даже план или выручка могут отсутствовать в отдельном сегменте.

Как проверить результат

Соберите тестовую таблицу с четырьмя строками: 40/1000, 0/500, 0/0 и пусто/пусто. Выведите числитель, знаменатель, DIVIDE без альтернативы и DIVIDE с нулём. После этого обсудите с владельцем отчёта, какие строки должны быть пустыми, а какие нулевыми. Решение фиксируется в методике, а не остаётся скрытым в формуле.

Как собрать расчёт по шагам

1. Назовите числитель и знаменатель

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

2. Решите смысл нуля

Отделите реальный нулевой результат от отсутствия данных.

3. Создайте базовые меры

Сначала отдельно проверьте числитель и знаменатель, затем используйте DIVIDE.

4. Проверьте итог

Сравните отношение общих сумм со средним значением процентов.

5. Добавьте статус данных

Для новых или отключённых объектов покажите причину пустого результата.

Ограничения и типичные ошибки

Павел различает торговую точку с нулевым результатом и закрытую точку без данных для расчёта
  • Всегда передавать 0 третьим аргументом ради красивой таблицы.
  • Усреднять проценты без веса.
  • Делить значения разных периодов.
  • Скрывать отрицательный знаменатель, если он отражает возвраты или корректировки.

После изменения модели проверьте контрольный набор вручную и запишите дату проверки. Если источник, связь или определение показателя изменились, старый результат уже нельзя молча сравнивать с новым.

Как я делаю это в проектах

В отчётах я рядом с процентом храню числитель и знаменатель. Пользователь может не видеть их постоянно, но в детализации они доступны. Для пустых значений используем понятную подсказку: нет базы, канал не запущен или источник не обновился. Тогда DIVIDE решает техническую задачу, а отчёт сохраняет управленческий смысл. Ноль остаётся нулём, пустота — пустотой, и никто не празднует «улучшение» из-за пропавших данных.

Что сделать прямо сейчас

Найдите одну процентную меру и отдельно проверьте её на нулевом знаменателе, пустых данных и общем итоге.

Если хотите собрать расчёт вместе с моделью и нормальной проверкой данных, можно обсудить задачу с ФАНалитикой. Начнём с одного показателя и доведём его до решения, а не до ещё одной формулы в коллекции.

Первичные источники

ПО ТЕМЕ

Продолжить разбираться

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

Павел переставляет прозрачные фильтры перед одним расчётом и получает изменившийся результат
Управление5 мин389

CALCULATE в DAX: как меняется контекст фильтра

CALCULATE нужна, когда меру надо посчитать не в текущем наборе данных, а в специально изменённом контексте. Разберём это на продажах без магии и шаманства вокруг DAX.

↗
Павел отдельно оценивает каждую коробку в ряду, а затем собирает результаты в общий итог
Управление5 мин435

SUMX в DAX: когда простой SUM уже не справляется

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

↗

Можно просто написать

Познакомимся и обсудим задачу

Расскажите, что хотите улучшить или в чём пока не можете разобраться. Необязательно приходить с готовым ТЗ — вместе посмотрим на ситуацию и поймём, с чего начать.

Работаем без заявки.

Не оставляйте номер и не ждите звонка. Просто напишите сами туда, где вам удобно.