Примеры
Перед просмотром примеров, изучите процедуру создания мер.
Система проверяет вводимые DAX-формулы на наличие синтаксических ошибок. Неправильно написанные функции подчеркиваются волнистой красной линией, а при наведении курсора мыши на такую функцию появляется пояснительный текст. Это позволяет легко обнаруживать и исправлять ошибки.
Пример 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. Расчет итоговой прибыли с учетом типа клиента
Рассчитывать прибыль будем как для физических лиц, у которых имеется скидка, указанная в столбце 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"} ))
В результате мы можем, например, создать следующую диаграмму с использованием созданных мер:
При сложении двух формул, мы получим прибыль с учетом типа клиента:
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 года.
Расчет суммы продаж за указанный период:
Аналогичным образом мы проведем расчет суммы продаж (с небольшими изменениями):
где:
SUM (fact[salesamount])
– вычисляет сумму значений из столбца salesamount
таблицы fact
.
FILTER
– как показано в примере выше, выбирает только те строки из таблицы, которые соответствуют периоду с июля по сентябрь 2022 года.
В результате выполнения этой формулы будет получена сумма продаж за определенный период времени (с июля по сентябрь 2022 года).
В качестве итога, используя созданные меры, мы может визуализировать полученные результаты следующим образом:
Пример 5. Расчет динамики продаж за определенный период
В данном примере мы рассчитаем динамику продаж за два месяца и за два календарных года, чтобы понять какие товары не приносят прибыли и исключить их из ассортимента.
Используемые данные:
Таблица фактов | Таблица измерений |
---|---|
fact
| dimdate
|
Расчет динамики продаж по месяцам
Для расчета динамики продаж за два месяца (в нашем примере август-сентябрь), мы сделаем следующее:
Сперва мы рассчитаем объем продаж за август. Для этого мы создадим меру с использованием следующей формулы:
где:
SUM (fact[salesamount])
– вычисляет сумму значений из столбцаsalesamount
таблицыfact
;FILTER
– выбираются только те строки таблицыdimdate
, у которых значение в столбцеcalendarmonth
равно202208
(август 2022 года);Далее рассчитаем объем продаж за сентябрь. Для этого мы будем использовать аналогичную формулу, в которой заменим лишь номер месяца (август):
где
202209
– сентябрь 2022 года.Теперь самое время получить разницу между двумя этими результатами, чтобы определить динамику продаж. Для этого мы вычтем значения, полученные за август из значений, полученных за сентябрь:
Результат можно визуализировать, например, с помощью таблицы или диаграммы:
Расчет динамики продаж по годам
Динамика продаж по годам рассчитывается аналогичным образом – нам необходимо только заменить месяцы на года и использовать соответствующий столбец (calendaryear), где прописаны года:
где
FILTER (dimdate, dimdate[calendaryear] = 2022)
и FILTER (dimdate, dimdate[calendaryear] = 2021)
фильтруют данные по годам.
Созданную меру можно добавить в таблицу для полноты картины:
Чтобы иметь быстрый доступ к полученной статистике, можно создать дашборд:
Пример 6. Расчет прибыли по каждой продаже за месяц с учетом дополнительных платежей
Рассмотрим пример, в котором прибыль рассчитывается по каждой продаже с учетом различных платежей (например, за аренду помещений). Дополнительные платежи оплачиваются в разное время и не являются заказами. Рассматриваемый период - сентябрь 2022 года.
Используемые данные:
Таблица фактов | Таблица измерений |
---|---|
fact
| dimdate
|
Для проведения расчетов мы воспользуемся следующей формулой:
Первая часть формулы суммирует выручку от каждой продажи:
SUMX (fact, fact[salesamount]SUMX (fact, fact[salesamount]
и вычитает сумму скидки:
- fact[discountamount])
Далее применяется фильтр, чтобы учитывать только транзакции типа “order
" в столбце transactiontype
таблицы fact
.
Вторая и третья части рассчитывают дополнительные платежи по каждому заказу:
Во второй части формулы используется CALCULATE-функция, которая вычисляет сумму всех платежей за сентябрь 2022 года, относящихся к продажам за этот же период. Функция REMOVEFILTERS
используется для того, чтобы убрать все фильтры из таблицы fact
. Функция FILTER
добавляет фильтры по типу транзакции и месяцу календаря.
В третьей части CALCULATE-функция подсчитывает количество продаж онлайн за сентябрь 2022 года. Функция REMOVEFILTERS
убирает все фильтры из таблицы "fact
", функция и FILTER
добавляет фильтры по типу транзакции и месяцу календаря.
Дополнительные платежи вычитаются из выручки, и мы получаем прибыль по каждой продаже с учетом дополнительных расходов за сентябрь 2022 года:
Пример 7. Расчет суммы накопленного итога
В данном примере мы рассчитаем накопленный итог продаж за определенный период времени. Для расчетов мы будем использовать формулу, которая позволяет посчитать накопленный итог со сбросом по годам. С помощью такой формулы можно выполнить любое разбиение визуализируемых данных – по дням, неделям, месяцам, кварталам и полугодиям.
Используемые данные
Таблица фактов | Таблица измерений |
---|---|
facts
| dimdate
|
Для проведения расчетов, воспользуемся следующей формулой:
Данная формула легла в основу новой меры – Накопленный итог, и с ее помощью мы визуализировали накопленный итог со сбросом по годам:
На изображении видно, что начиная с первого месяцам 2009 года накопление сбрасывается и происходит дальнейший накопительный расчет.
Накопленный итог без сброса по годам пока не работает.
Данная формула функционирует в бета-режиме. Рекомендуется тестирование на небольшом объеме данных.
Пример 8. Вычисление средней цены товара для каждого чека
В данном примере мы вычислим среднюю цену товара для каждого чека, используя данные о ценах и номерах заказов из таблицы factonlinesales
.
Используемые данные:
Таблица фактов |
---|
factonlinesales
|
Для вычислений мы воспользуемся следующей формулой:
Данная формула состоит из нескольких шагов:
Вычисляется сумма цен всех товаров в чеках без учета фильтров (
REMOVEFILTERS
). Для этого сначала применяется функцияCALCULATE
, которая вычисляет сумму цен всех товаров по каждому уникальному номеру заказа (salesordernumber
) из таблицыfactonlinesales
, затем функцияREMOVEFILTERS
удаляет фильтры, которые могут изменить сумму цен, и возвращает данные без фильтров.Вычисляется количество товаров в каждом чеке без учета фильтров. Для этого также используется функция
CALCULATE
с аналогичными параметрами.Вычисляется средняя цена товара по каждому чеку с помощью функции
DIVIDE
. Результат первого шага делится на результат второго шага, чтобы получить среднюю цену товара по каждому чеку.Результат деления на ноль заменяется на пустую строку (
BLANK()
).
Смотрите также
На этой странице
Пример 1. Расчет выручки в разбивке по магазинам и по продажам со скидками
Пример 4. Расчет суммы продаж за указанный период (несколько месяцев)
Пример 6. Расчет прибыли по каждой продаже за месяц с учетом дополнительных платежей
Время чтения: 4 мин.
Нужна дополнительная помощь?