Я пытаюсь поиграть с выражениями FILTER и CALCULATE DAX. Я хотел бы узнать количество отдельных заказов, в которых есть товары, цена которых меньше средней стоимости категории: Велосипеды. Сначала я создаю меру для расчета средней стоимости велосипедов, которая составляет 913,61.
avg product cost bikes =
CALCULATE (
AVERAGE ( AW_Product_DIM[ProductCost] ),
AW_Product_Categories_DIM[CategoryName] = "Bikes"
)
Затем я создаю меру для расчета общего количества заказов.
Total Orders =
DISTINCTCOUNT ( AW_Sales[OrderNumber] )
Затем у меня есть функция РАСЧЕТ с ФИЛЬТРОМ для расчета общего количества заказов, в которых есть продукты, стоимость которых меньше средней стоимости всех продуктов, которая составляет 913,61.
Sales less than Bike's avg =
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < [avg product cost bikes]
)
)
Не могли бы вы помочь мне понять, почему я не получаю никакого значения в столбце «Продажи меньше, чем среднее значение велосипеда»? Все товары в категории «Аксессуары и одежда» меньше средней стоимости велосипеда, которая составляет 913,61. Таким образом, продажи должны быть на 16983 меньше, чем в среднем у Bike по аксессуарам и на 6976 по одежде. Всех велосипедов больше 1000, так что должно быть пусто.
Пожалуйста, обратитесь к
У которого есть представление Matrix, которое я пытаюсь визуализировать.
Мера вычисляется в контексте, из которого она вызывается. Когда вы вызываете меру внутри ФИЛЬТРА (или любой функции итератора), она вычисляется в контексте строки таблицы, которую вы итерируете, и может иметь другое значение для каждой строки.
Один из способов исправить это — вычислить его один раз вне ФИЛЬТРА и повторно использовать это значение для каждой строки, которую ФИЛЬТР выполняет итерацию, следующим образом:
Sales less than Bike's avg =
VAR AvgBikeCost = [avg product cost bikes]
RETURN
CALCULATE (
[Total Orders],
FILTER (
AW_Product_DIM,
AW_Product_DIM[ProductCost] < AvgBikeCost
)
)
Можно настроить контекст в FILTER, чтобы заставить его работать, но это будет гораздо менее эффективно, чем однократное вычисление значения.
Да, вы можете показать мне, как? Пожалуйста, только для понимания
Добавление ALL ( AW_Product_Categories_DIM )
(или REMOVEFILTERS
вместо ALL
) в качестве еще одного аргумента в CALCULATE
к вашей первой avg
мере может помочь. Однако мне нужно увидеть диаграмму отношений модели, чтобы знать наверняка.
Это именно то, чего я пытаюсь достичь. Поскольку я изучаю PowerBI, я хотел бы знать, можем ли мы каким-либо другим образом достичь таких результатов, например, используя комбинацию функций DAX, таких как CALCULATE и REMOVEFILTERS и т. д.?