Вычисление средней цены товара для каждого чека
В данном примере используется модель данных, описанная на странице Поддерживаемые функции DAX.
В данном примере мы вычислим среднюю цену товара для каждого чека, используя данные о ценах и номерах заказов из таблицы factonlinesales.
Используемые данные:
Таблица фактов |
|---|
factonlinesales
|
Для вычислений мы воспользуемся следующей формулой:
Средняя цена товара по чеку = DIVIDE(
CALCULATE(
SUM('factonlinesales'[unitprice]),
REMOVEFILTERS('factonlinesales'),
SUMMARIZE('factonlinesales', 'factonlinesales'[salesordernumber])
),
CALCULATE(
COUNT('factonlinesales'[productkey]),
REMOVEFILTERS('factonlinesales'),
SUMMARIZE('factonlinesales', 'factonlinesales'[salesordernumber])
), BLANK()
)Данная формула состоит из нескольких шагов:
Вычисляется сумма цен всех товаров в чеках без учета фильтров (
REMOVEFILTERS). Для этого сначала применяется функцияCALCULATE, которая вычисляет сумму цен всех товаров по каждому уникальному номеру заказа (salesordernumber) из таблицыfactonlinesales, затем функцияREMOVEFILTERSудаляет фильтры, которые могут изменить сумму цен, и возвращает данные без фильтров.Вычисляется количество товаров в каждом чеке без учета фильтров. Для этого также используется функция
CALCULATEс аналогичными параметрами.Вычисляется средняя цена товара по каждому чеку с помощью функции
DIVIDE. Результат первого шага делится на результат второго шага, чтобы получить среднюю цену товара по каждому чеку.Результат деления на ноль заменяется на пустую строку (
BLANK()).
Если в заказе несколько строк для одного и того же товара (разные цены, например, по скидке и без), то формула может не работать, как ожидается. Это связано с тем, что для одного и того же товара несколько позиций, в результате итоговое количество товаров считается неверно.
Смотрите также
Нужна дополнительная помощь?