нужна помощьидеи по созданию, как мы надеемся, простой меры DAX

#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 = вычислить(СУММА(«Таблица»[Сумма]), ФИЛЬТР(ВСЕ(«Таблица хранения»), «Таблица хранения» [Состояние] = ВЫБРАННОЕ ЗНАЧЕНИЕ(«Таблица хранения» [Состояние])))

https://dax.guide/filter/

https://dax.guide/selectedvalue/

https://dax.guide/all/

Ответ №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
)