Примеры

Перед просмотром примеров, изучите процедуру создания мер.

Пример 1. Расчет выручки в разбивке по магазинам и по продажам со скидками

  1. Выручка считается по формуле:
    Количество товара в заказе умножить на цену за единицу товара, минус скидка в заказе. Для построчного вычисления используем SUMX:
    SUMX(factonlinesales, factonlinesales[unitprice]*factonlinesales[salesquantity] - factonlinesales[discountamount])

  2. Для визуализации используем гистограмму. На нее выведем нашу меру в разбивке по магазинам:

     

  3. Для того чтобы отобразить данные по продажам, по которым были акции, используем виджет фильтр:

     

  4. Если есть необходимость рассчитать сразу продажи со скидками, без использования фильтра, будем использовать следующую формулу:

    CALCULATE(SUMX(factonlinesales, factonlinesales[unitprice]*factonlinesales[salesquantity] - factonlinesales[discountamount]), FILTER(dimpromotion,dimpromotion[promotioncategory] IN{"Store"}) )



Пример 2. Расчет доли продаж по продуктам внутри бренда

  1. Сначала рассчитаем доли продаж по брендам.
    Removefilters в знаменателе отменяет все фильтры по измерению dimproduct, таким образом, доля считается корректно:

     

  2. Теперь добавим в разбивку продукт. Мера будет считать долю каждого продукта от общей суммы продаж:

  3. Теперь мы посчитаем долю каждого продукта внутри бренда. Для этого мы сгруппируем продажи по бренду с помощью функции SUMMARIZE:

     

Пример 3. Расчет итоговой прибыли с учетом типа клиента

Рассчитывать прибыль будем как для физических лиц, у которых имеется скидка, указанная в столбце discountamount, так и для юридических лиц, у которых также есть скидка, указанная в столбце bonus.

Используемые данные:

Таблица фактов

Таблица измерений

Таблица фактов

Таблица измерений

fact
Используемые столбцы:

  • salesamount – сумма, которую заплатил клиент с учетом количества;

  • discountamount – сумма скидки;

  • bonus – бонус (отдельный для каждого клиента).

dimcustomer
Используемый столбец:

  • customertype – тип клиента (“Person“ – физическое лицо, “Company“ – юридическое).

Для расчета прибыли для физически лиц, создадим меру Прибыль для физ. лиц и введем следующую формулу:

Прибыль для физ. лиц = CALCULATE (SUMX (fact, fact[salesamount] - fact[discountamount]), FILTER (dimcustomer, dimcustomer[customertype] IN {"Person"} ))

где:

  • fact[discountamount] – скидка, которая вычитается из общей суммы продаж fact[salesamount];

  • функция FILTER фильтрует измерения dimcustomer по значению столбца customertype, в данном случае равному Person - т.е. фильтрует только физических лиц.

Таким образом, формула рассчитывает сумму прибыли для всех фактов, относящихся к физическим лицам.

Аналогичным образом создается мера Прибыль для юр. лиц с тем отличием, что вместо fact[discountamount] мы будем использовать fact[bomus], а вместо IN {"Person"} будем использовать IN {"Company"}:

Прибыль для юр. лиц = CALCULATE (SUMX (fact, fact[salesamount] - fact[bonus]), FILTER (dimcustomer, dimcustomer[customertype] IN {"Company"} ))

В результате мы можем, например, создать следующую диаграмму с использованием созданных мер:

При сложении двух формул, мы получим прибыль с учетом типа клиента:

CALCULATE ( SUMX (fact, fact[salesamount] - fact[discountamount]), FILTER (dimcustomer, dimcustomer[customertype] IN {"Person"} ) ) + CALCULATE ( SUMX (fact, fact[salesamount] - fact[bonus]), FILTER (dimcustomer, dimcustomer[customertype] IN {"Company"} ) )

Пример 4. Расчет суммы продаж за указанный период (несколько месяцев)

В этом примере мы попробуем понять, сколько выручки приносит “целевой“ период.

Используемые данные:

Таблица фактов

Таблица измерений

Таблица фактов

Таблица измерений

fact
Используемые столбцы:

  • salesamount – сумма, которую заплатил клиент с учетом количества;

  • onlinesaleskey – уникальный идентификатор заказа (транзакции);

dimdate
Используемый столбец:

  • calendarmonth – год + месяц.

Для получения необходимых расчетов мы будем использовать следующие формулы:

Расчет количества продаж за указанный период:

CALCULATE ( COUNT (fact[onlinesaleskey]), FILTER ( dimdate, AND (dimdate[calendarmonth] >= 202207, dimdate[calendarmonth] < 202209) ) )

где:

COUNT (fact[onlinesaleskey]) – подсчитывает количество транзакций в столбце onlinesaleskey таблицы фактов fact.

FILTER – фильтрует таблицу dimdate по определенному условию, которое состоит из двух частей:

  • dimdate[calendarmonth] >= 202207 - выбираются только те строки таблицы dimdate, у которых значение в столбце calendarmonth больше или равно 202207 (июль 2022 года);

  • dimdate[calendarmonth] < 202209 - выбираются только те строки, у которых значение в столбце calendarmonth меньше 202209 (сентябрь 2022 года).

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

Расчет суммы продаж за указанный период:

Аналогичным образом мы проведем расчет суммы продаж (с небольшими изменениями):

где:

SUM (fact[salesamount]) – вычисляет сумму значений из столбца salesamount таблицы fact.

FILTER – как показано в примере выше, выбирает только те строки из таблицы, которые соответствуют периоду с июля по сентябрь 2022 года.

В результате выполнения этой формулы будет получена сумма продаж за определенный период времени (с июля по сентябрь 2022 года).

В качестве итога, используя созданные меры, мы может визуализировать полученные результаты следующим образом:

Пример 5. Расчет динамики продаж за определенный период

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

Используемые данные:

Таблица фактов

Таблица измерений

Таблица фактов

Таблица измерений

fact
Используемые столбцы:

  • salesamount – сумма, которую заплатил клиент с учетом количества;

dimdate
Используемый столбец:

  • calendarmonth – год + месяц;

  • calendaryear – год.

Расчет динамики продаж по месяцам

Для расчета динамики продаж за два месяца (в нашем примере август-сентябрь), мы сделаем следующее:

  1. Сперва мы рассчитаем объем продаж за август. Для этого мы создадим меру с использованием следующей формулы:

    где:
    SUM (fact[salesamount]) – вычисляет сумму значений из столбца salesamount таблицы fact;
    FILTER – выбираются только те строки таблицы dimdate, у которых значение в столбце calendarmonth равно 202208 (август 2022 года);

  2. Далее рассчитаем объем продаж за сентябрь. Для этого мы будем использовать аналогичную формулу, в которой заменим лишь номер месяца (август):

    где 202209 – сентябрь 2022 года.

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

    Результат можно визуализировать, например, с помощью таблицы или диаграммы:

     

     

Расчет динамики продаж по годам

Динамика продаж по годам рассчитывается аналогичным образом – нам необходимо только заменить месяцы на года и использовать соответствующий столбец (calendaryear), где прописаны года:

где

FILTER (dimdate, dimdate[calendaryear] = 2022) и FILTER (dimdate, dimdate[calendaryear] = 2021) фильтруют данные по годам.

Созданную меру можно добавить в таблицу для полноты картины:

Чтобы иметь быстрый доступ к полученной статистике, можно создать дашборд:

Пример 6. Расчет прибыли по каждой продаже за месяц с учетом дополнительных платежей

Рассмотрим пример, в котором прибыль рассчитывается по каждой продаже с учетом различных платежей (например, за аренду помещений). Дополнительные платежи оплачиваются в разное время и не являются заказами. Рассматриваемый период - сентябрь 2022 года.

Используемые данные:

Таблица фактов

Таблица измерений

Таблица фактов

Таблица измерений

fact
Используемые столбцы:

  • salesamount – сумма, которую заплатил клиент с учетом количества;

  • onlinesaleskey – уникальный идентификатор заказа;

  • transactiontype – тип транзакции (order или payment)

dimdate
Используемый столбец:

  • calendarmonth – год + месяц;

Для проведения расчетов мы воспользуемся следующей формулой:

Первая часть формулы суммирует выручку от каждой продажи:

SUMX (fact, fact[salesamount]SUMX (fact, fact[salesamount]

и вычитает сумму скидки:

- fact[discountamount])

Далее применяется фильтр, чтобы учитывать только транзакции типа “order" в столбце transactiontype таблицы fact.

Вторая и третья части рассчитывают дополнительные платежи по каждому заказу:

Во второй части формулы используется CALCULATE-функция, которая вычисляет сумму всех платежей за сентябрь 2022 года, относящихся к продажам за этот же период. Функция REMOVEFILTERS используется для того, чтобы убрать все фильтры из таблицы fact. Функция FILTER добавляет фильтры по типу транзакции и месяцу календаря.

В третьей части CALCULATE-функция подсчитывает количество продаж онлайн за сентябрь 2022 года. Функция REMOVEFILTERS убирает все фильтры из таблицы "fact", функция и FILTER добавляет фильтры по типу транзакции и месяцу календаря.

Дополнительные платежи вычитаются из выручки, и мы получаем прибыль по каждой продаже с учетом дополнительных расходов за сентябрь 2022 года:


Смотрите также

Поддерживаемые функции DAX
Создание мер