Как рассчитать выражение DAX на определенных уровнях - PullRequest
0 голосов
/ 11 июля 2019

Мне нужно выполнить конкретные вычисления для различных сгруппированных атрибутов, а затем усреднить эти значения на более высоких уровнях. Вот пример того, как могут выглядеть данные:

enter image description here

Поле формулы

1 - ABS(Forecast - Actual)/Actual

Вы можете видеть на рисунке, что если бы я выполнял этот расчет на самом низком уровне, а затем в Power BI я хотел бы опустить только поле Среднее из формулы, вы можете видеть, что это получится на уровне 2%. Это не тот номер, который я хочу получить.

Теперь, если я попытаюсь сделать это по-другому, просто подведу итоги всех прогнозов и фактических чисел и выполним ту же формулу против них. Я тоже не хочу этого получать. Я получаю что-то вроде этого

enter image description here

Что я действительно пытаюсь сделать, так это выполнить эту формулу на уровне MaterialNumber / Plant, а затем получить среднее из этих чисел. Так это будет выглядеть примерно так:

enter image description here

Может ли кто-нибудь помочь мне в достижении чего-то подобного.

1 Ответ

0 голосов
/ 11 июля 2019

Используя «Данные» для названия вашей таблицы.

Создать меру:

Total Forecast = SUM(Data[Forecast])

Другая мера:

Total Actual =SUM(Data[Actual])

Третья мера:

Variance = ABS([Total Forecast] - [Total Actual])

Четвертая мера:

Variance % = 1 - DIVIDE([Variance],[Total Actual])

Наконец:

Average Variance % =
AVERAGEX(
   SUMMARIZE(
       Data, 
       Data[MaterialNumber],
       Data[Plant],
      "Variance Percent", [Variance %]),
[Variance Percent]
)

Результат:

enter image description here

Как это работает:

  1. Расчеты разбиты на несколько мер, чтобы сделать код чище и проще для понимания;
  2. Последняя мера работает следующим образом: мы суммируем данные по материалам и заводам и вычисляем% отклонения для каждой группы. Затем AverageX перебирает эти группы и усредняет их отклонения.
...