#powerbi #dax #ssas-tabular
Вопрос:
Я пытаюсь выяснить DAX для создания новой меры в табличной модели данных SSAS. Пример того, что я пытаюсь сделать, легче показать, чем описать. Мой табличный набор данных SSAS создает следующую таблицу. Значения A и B взяты из таблицы «Магазины», Col C-показатель из таблицы «Продажи», Col D-показатель из таблицы «Продукты», а Col E-C/D. Все это прекрасно работает. Данные были подделаны в Excel, чтобы защитить невинных, но они работают в Power BI.
Что я хотел бы сделать, так это добавить новую меру, которая вычисляет продажи/продукт на уровне штата, и показать эту меру для каждого магазина в этом штате, как показано ниже
Предположительно, я должен перебрать все строки и рассчитать общий объем продаж/состояние и общее количество проданных продуктов/состояние и разделить эти 2, чтобы получить ответ, но не могу вычислить DAX, чтобы добраться туда. Я перепробовал множество комбинаций
calculate(
sumx(...),
filter(
all(...),
...
)
)
безрезультатно.
Комментарии:
1. Я думаю, что это может быть что-то вроде этого (?): StateTotalsByProductAndDate:= ADDCOLUMNS ( ПЕРЕКРЕСТИЕ ( ЗНАЧЕНИЯ ( «Продукт»[Имя] ), ЗНАЧЕНИЯ ( «Дата»[Дата]), ЗНАЧЕНИЯ ( «Магазины»[Состояние]) ), «Amt», [Сумма продаж] )
Ответ №1:
Вы должны использовать ФИЛЬТР со ВСЕМИ, чтобы манипулировать контекстом(удалить текущий контекст).;
MesureSumStateLevel = вычислить(СУММА(«Таблица»[Сумма]), ФИЛЬТР(ВСЕ(«Таблица хранения»), «Таблица хранения» [Состояние] = ВЫБРАННОЕ ЗНАЧЕНИЕ(«Таблица хранения» [Состояние])))
Ответ №2:
Спасибо за совет. Сначала я попробовал это и бросил, потому что не смог заставить это работать. Я вернулся сегодня утром и решил эту проблему. Вот что я сделал:
State Ttl =
var trxYr = convert(SELECTEDVALUE(dim_date[Year]), INTEGER) //needed because Year is stored as text in the model
var trxMo = SELECTEDVALUE(dim_Date[Short Month Name])
var trxState = SELECTEDVALUE(fact_Sales[state])
Return
CALCULATE(
SUM(fact_sales[SalesAmt])
,all(fact_sales)
,year(fact_sales[SaleDATE]) = trxYr
,dim_Date[Short Month Name] = trxMo
,dim_Stores[state] = trxState
)