Сравнение версий
Ключ
- Эта строка добавлена.
- Эта строка удалена.
- Изменено форматирование.
Примечание |
---|
Перед просмотром примеров, изучите процедуру создания мер. |
Пример 1. Расчет выручки в разбивке по магазинам и по продажам со скидками
Выручка считается по формуле:
Количество товара в заказе умножить на цену за единицу товара, минус скидка в заказе. Для построчного вычисления используемSUMX
:SUMX(factonlinesales, factonlinesales[unitprice]*factonlinesales[salesquantity] - factonlinesales[discountamount])
Для визуализации используем гистограмму. На нее выведем нашу меру в разбивке по магазинам:
Для того чтобы отобразить данные по продажам, по которым были акции, используем виджет фильтр:
Если есть необходимость рассчитать сразу продажи со скидками, без использования фильтра, будем использовать следующую формулу:
Блок кода CALCULATE(SUMX(factonlinesales, factonlinesales[unitprice]*factonlinesales[salesquantity] - factonlinesales[discountamount]), FILTER(dimpromotion,dimpromotion[promotioncategory] IN{"Store"}) )
Пример 2. Расчет доли продаж по продуктам внутри бренда
Сначала рассчитаем доли продаж по брендам.
Removefilters
в знаменателе отменяет все фильтры по измерению dimproduct, таким образом, доля считается корректно:Теперь добавим в разбивку продукт. Мера будет считать долю каждого продукта от общей суммы продаж:
Теперь мы посчитаем долю каждого продукта внутри бренда. Для этого мы сгруппируем продажи по бренду с помощью функции
SUMMARIZE
:
Выборка | ||
---|---|---|
| ||
Пример 3. Расчет средневзвешенной ценыДля расчета средневзвешенной цены необходимо выполнить следующие шаги:
|
Пример 3. Расчет итоговой прибыли с учетом типа клиента
Рассчитывать прибыль будем как для физических лиц, у которых имеется скидка, указанная в столбце discountamount, так и для юридических лиц, у которых также есть скидка, указанная в столбце bonus.
Используемые данные:
Таблица фактов | Таблица измерений |
---|---|
fact
| dimcustomer
|
Для расчета прибыли для физически лиц, создадим меру Прибыль для физ. лиц и введем следующую формулу:
Прибыль для физ. лиц = 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"} ))
В результате мы можем, например, создать следующую диаграмму с использованием созданных мер:
Image AddedПри сложении двух формул, мы получим прибыль с учетом типа клиента:
Блок кода |
---|
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
| dimdate
|
Для получения необходимых расчетов мы будем использовать следующие формулы:
Расчет количества продаж за указанный период:
Блок кода |
---|
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 года.
Расчет суммы продаж за указанный период:
Аналогичным образом мы проведем расчет суммы продаж (с небольшими изменениями):
Блок кода |
---|
CALCULATE (
SUM (fact[salesamount]),
FILTER (
dimdate,
AND (dimdate[calendarmonth] >=
202207, dimdate[calendarmonth] < 202209)
)
) |
где:
SUM (fact[salesamount])
– вычисляет сумму значений из столбца salesamount
таблицы fact
.
FILTER
– как показано в примере выше, выбирает только те строки из таблицы, которые соответствуют периоду с июля по сентябрь 2022 года.
В результате выполнения этой формулы будет получена сумма продаж за определенный период времени (с июля по сентябрь 2022 года).
В качестве итога, используя созданные меры, мы может визуализировать полученные результаты следующим образом:
Image AddedПример 5. Расчет динамики продаж за определенный период
В данном примере мы рассчитаем динамику продаж за два месяца и за два календарных года, чтобы понять какие товары не приносят прибыли и исключить их из ассортимента.
Используемые данные:
Таблица фактов | Таблица измерений |
---|---|
fact
| dimdate
|
Расчет динамики продаж по месяцам
Для расчета динамики продаж за два месяца (в нашем примере август-сентябрь), мы сделаем следующее:
Сперва мы рассчитаем объем продаж за август. Для этого мы создадим меру с использованием следующей формулы:
Блок кода CALCULATE ( SUM (fact[salesamount]), FILTER (dimdate, dimdate[calendarmonth] = 202208) )
где:
SUM (fact[salesamount])
– вычисляет сумму значений из столбцаsalesamount
таблицыfact
;FILTER
– выбираются только те строки таблицыdimdate
, у которых значение в столбцеcalendarmonth
равно202208
(август 2022 года);Далее рассчитаем объем продаж за сентябрь. Для этого мы будем использовать аналогичную формулу, в которой заменим лишь номер месяца (август):
Блок кода CALCULATE ( SUM (fact[salesamount]), FILTER (dimdate, dimdate[calendarmonth] = 202208) )
где
202209
– сентябрь 2022 года.Теперь самое время получить разницу между двумя этими результатами, чтобы определить динамику продаж. Для этого мы вычтем значения, полученные за август из значений, полученных за сентябрь:
Блок кода CALCULATE ( SUM (fact[salesamount]), FILTER (dimdate, dimdate[calendarmonth] = 202208) ) - CALCULATE ( SUM (fact[salesamount]), FILTER (dimdate, dimdate[calendarmonth] = 202208) )
Результат можно визуализировать, например, с помощью таблицы или диаграммы:
Image AddedImage Added
Расчет динамики продаж по годам
Динамика продаж по годам рассчитывается аналогичным образом – нам необходимо только заменить месяцы на года и использовать соответствующий столбец (calendaryear), где прописаны года:
Блок кода |
---|
CALCULATE (
SUM (fact[salesamount]),
FILTER (dimdate, dimdate[calendaryear] = 2022)
)
- CALCULATE (
SUM (fact[salesamount]),
FILTER (dimdate, dimdate[calendaryear] = 2021)
) |
где
FILTER (dimdate, dimdate[calendaryear] = 2022)
и FILTER (dimdate, dimdate[calendaryear] = 2021)
фильтруют данные по годам.
Созданную меру можно добавить в таблицу для полноты картины:
Image AddedЧтобы иметь быстрый доступ к полученной статистике, можно создать дашборд:
Image AddedПример 6. Расчет прибыли по каждой продаже за месяц с учетом дополнительных платежей
Рассмотрим пример, в котором прибыль рассчитывается по каждой продаже с учетом различных платежей (например, за аренду помещений). Дополнительные платежи оплачиваются в разное время и не являются заказами. Рассматриваемый период - сентябрь 2022 года.
Используемые данные:
Таблица фактов | Таблица измерений |
---|---|
fact
| dimdate
|
Для проведения расчетов мы воспользуемся следующей формулой:
Блок кода |
---|
CALCULATE (
SUMX (fact, fact[salesamount] - fact[discountamount]),
FILTER (fact, fact[transactiontype] IN {“order”})
)
- CALCULATE (
SUM (fact[payment]),
REMOVEFILTERS (fact),
FILTER (fact, fact[transactiontype] IN {“payment”}),
FILTER (dimdate, dimdate[calendarmonth] = 202209)
)
/ CALCULATE (
COUNT (fact[onlinesaleskey]),
REMOVEFILTERS (fact),
FILTER (fact, fact[transactiontype] IN {“order”}),
FILTER (dimdate, dimdate[calendarmonth] = 202209)
) |
Первая часть формулы суммирует выручку от каждой продажи:
SUMX (fact, fact[salesamount]SUMX (fact, fact[salesamount]
и вычитает сумму скидки:
- fact[discountamount])
Далее применяется фильтр, чтобы учитывать только транзакции типа “order
" в столбце transactiontype
таблицы fact
.
Вторая и третья части рассчитывают дополнительные платежи по каждому заказу:
Во второй части формулы используется CALCULATE-функция, которая вычисляет сумму всех платежей за сентябрь 2022 года, относящихся к продажам за этот же период. Функция REMOVEFILTERS
используется для того, чтобы убрать все фильтры из таблицы fact
. Функция FILTER
добавляет фильтры по типу транзакции и месяцу календаря.
В третьей части CALCULATE-функция подсчитывает количество продаж онлайн за сентябрь 2022 года. Функция REMOVEFILTERS
убирает все фильтры из таблицы "fact
", функция и FILTER
добавляет фильтры по типу транзакции и месяцу календаря.
Дополнительные платежи вычитаются из выручки, и мы получаем прибыль по каждой продаже с учетом дополнительных расходов за сентябрь 2022 года:
Image AddedСмотрите также
На этой странице
Пример 1. Расчет выручки в разбивке по магазинам и по продажам со скидками
Пример 4. Расчет суммы продаж за указанный период (несколько месяцев)
Пример 6. Расчет прибыли по каждой продаже за месяц с учетом дополнительных платежей
🕑 Время чтения: 2 4 мин.
Нужна дополнительная помощь?