Тяжёлая доля. Как посчитать долю или процент от целого в PowerBI
Оценивая результаты работы, мы, как правило, сравниваем или с плановыми показателями, или с аналогичным значением в прошлом, или проводим сравнение с себе подобными.
Но, если просто сравнивать абсолютные значения, то сделать какие-то выводы будет сложно, не зная контекста. Например, продажи трёх категорий различаются на 400-500 тысяч. Это много или мало?
Я специально сделал визуализацию, в которой немного значений, так что можно визуально увидеть и итоговое значение, и самое большое, и самое маленькое. Тем самым оценив значимость отклонений. Но на это всё тратится время и усилия, что отвлекает пользователя от конечной цели. Облегчить восприятие можно двумя способами. Представить данные графически:
Или изменить их представление, показав их относительную значимость в общем значении:
Чтобы получить процент от общего значения, можно воспользоваться неявными мерами, которые создаются с помощью интерфейса. Для этого достаточно добавить меру или столбец в поле значений, нажать правой клавишей мыши по ней и выбрать способ отображения "Общий процент":
И, хотя я всегда говорю: сначала вопрос - потом решение, - давайте сформулируем этот самый вопрос на основе полученной визуализации, чтобы затем самостоятельно написать меру, отвечающую на него.
Посчитай процент(долю) продаж отдельной категории от продаж всех выбранных категорий с учетом всех фильтров.
Создадим визуализацию, где у нас будет три среза(фильтра) по году(Year), полу(Gender) покупателя и категории(Category)
Создадим первую меру, с помощью функции ALL:
Добавляем меру в визуализацию:
Значения написанной нами меры и неявной меры - идентичны.
Установим фильтр по году - 2018:
Условие вопроса "с учетом всех фильтров" выполняется. Значения по прежнему одинаковые, а доли рассчитаны от итоговых продаж за 2018-й год.
Результат соответствует ожиданиям.
Но в вопросе ещё было "от продаж всех выбранных категорий". Давайте это и сделаем:
Значение написанной нами меры не соответствует ожиданиям. Это хорошо видно по строке итогов, где вместо 100% мы видим 58,91%. Это происходит потому, что функция ALL в соответствии со своим названием возвращает ВСЕ значения из указанного столбца, удалив ВСЕ фильтры, примененные к нему.
Попробуем воспользоваться функцией ALLEXCEPT:
Добавим новую меру в визуализацию:
Почему теперь везде 100%? Для этого обратимся к определению функции ALLEXCEPT:
Возвращает все строки в таблице, за исключением тех строк, на которые влияют указанные фильтры столбцов
То есть, мы наоборот сбросили ВСЕ фильтры с таблицы Products, кроме столбца Category, так как каждая строка визуализации имеет свой контекст вычисления (подробнее о работе контекстов можно почитать здесь).
Что ж, воспользуемся третьей функцией из семейства ALL - ALLSELECTED:
Полученный результат идентичен значению неявной меры и полностью отвечает поставленному вопросу.
Но что если усложнить задачу и добавить ещё и месяцы в визуализацию?
Сначала визуализация с неявной мерой:
На примере января видно, что расчёт доли идёт от "общего значения", то есть за весь год.
А как считает мера написанная самостоятельно:
Итог по каждому месяцу равен 100%, то есть в такой визуализации именованная мера правильнее отвечает на поставленный вопрос, нежели неявная мера.
Подводя итоги, хочу ещё раз отметить: сначала формулируем вопрос - затем создаём решение, выбирая для этого нужные функции.
Ссылка на отчёт.