Неожиданный результат измерения из таблицы фильтрации с динамическими критериями в Power BI

#powerbi #measure

Вопрос:

У меня есть таблица под названием DW_XYZ:

Год Месяц Тип Ценность
2021 1 A 10
2021 1 B 12
2021 2 A 20

*нет данных по типу B за месяц=2

Я хотел бы создать меру, в которой хранятся данные, которые я уже отфильтровал по данным за последний месяц, хранящимся в DW_XYZ, с формулой dax:

 CALCULATE(   SUM(DW_XYZ[Value]),   FILTER(DW_XYZ,DW_XYZ[Month]=   CALCULATE(MAX(DW_XYZ[Month]),   FILTER(DW_XYZ,DW_XYZ[Year]=  MAX(DW_XYZ[Year]))) amp;amp; DW_XYZ[Year]=MAX(DW_XYZ[Year]))  

На основе измерения я создаю 2 визуальных элемента карты для отображения данных типа A и типа B каждый. 1-й визуальный элемент для отображения типа A, поэтому я перетаскиваю меру, а также перетаскиваю тип столбца в «визуальный фильтр» и вручную выбираю «A», и делаю то же самое для 2-го визуального элемента (тип B).

Для типа A на карточке отображается ожидаемое значение (типа A и месяца=2). Но для типа B на карте отображается неожиданное значение (типа B и Месяц=1), оно должно быть типом B и месяцем=2, которое является пустым/нулевым. **кстати, было бы весьма признателен, если бы формула, включающая обработку пустых значений, была равна нулю (0) вместо пустого.

Ответ №1:

Попробуй

 MyMeasure = VAR MaxYear =  CALCULATE ( MAX ( DW_XYZ[Year] ), ALL ( DW_XYZ[Type] ) ) VAR MaxMonth =  CALCULATE ( MAX ( DW_XYZ[Month] ), ALL ( DW_XYZ[Type] ) ) RETURN  0    CALCULATE (  SUM ( DW_XYZ[Value] ),  FILTER ( DW_XYZ, DW_XYZ[Year] = MaxYear amp;amp; DW_XYZ[Month] = MaxMonth )  )  

Решающим отличием между вышеизложенным и вашей попыткой является включение ALL параметра «Применено к столбцу типа» в качестве фильтра CALCULATE при определении последнего года и месяца. Без этого внешний фильтр, который вы применяете к визуальному элементу, заставит оценку учитывать этот тип только при определении этих значений.

Комментарии:

1. Боже, это потрясающе и дает идеальный результат. Большое вам спасибо за вашу доброту.