Как суммировать показатель на основе разных уровней в Power BI с использованием DAX - PullRequest
1 голос
/ 08 октября 2019

У меня следующая структура таблицы:

| Name 1 | Name 2 | Month  | Count 1 | Count 2 | SumCount |
|--------|--------|--------|---------|---------|----------|
| A      | E      | 1      | 5       | 3       | 8        |
| A      | E      | 2      | 1       | 6       | 7        |
| A      | F      | 3      | 3       | 4       | 7        |

Теперь я вычисляю следующее с помощью меры DAX.

Measure = (sum(Table[Count 2] - sum(Table[Count 1])) * sum(Table[SumCount])

Я не могу использовать столбец, потому что тогда формулаприменяется перед исключением слоя (например, месяц). Если добавить к моей структуре таблицы и исключить месяц, это будет выглядеть так:

| Name 1 | Name 2 | Count 1 | Count 2 | SumCount | Measure |
|--------|--------|---------|---------|----------|---------|
| A      | E      | 6       | 9       | 15       | 45      |
| A      | F      | 3       | 4       | 7        | 7       |

Я добавил таблицу в представление, которое отображает только Name 1, и в этом случае мера курса будет суммироваться Count 1,Count 2 и SumCount и применяет меру, которая приводит к следующему результату:

| Name 1 | Measure |
|--------|---------|
| A      | 88      |

Но желаемый результат должен быть

| Name 1 | Measure |
|--------|---------|
| A      | 52      |

, который является суммой Measure,

Так что в основном я хочу, чтобы расчеты были на моем базовом уровне Measure = (sum(Table[Count 1] - sum(Table[Count 2])) * sum(Table[SumCount]), но при детализации и группировке этих имен он должен выполнять только sum.

Ответы [ 2 ]

1 голос
/ 08 октября 2019

Итераторная функция, такая как SUMX, - это то, что вам нужно, поскольку вы пытаетесь суммировать строку за строкой, а не агрегировать сначала.

Measure = SUMX ( Table, ( Table[Count 2] - Table[Count 1] ) * Table[SumCount] )

Все ваши фильтры будут применяться к первому аргументу,Table, и он будет суммировать только соответствующие строки.


Редактировать:

Если я правильно понимаю, вы хотите агрегировать по Month прежде чем принимать разницу и продукт. Один из способов сделать это - подвести итог (исключая Month) перед использованием SUMX следующим образом:

Measure =
VAR Summary =
    SUMMARIZE (
        Table,
        Table[Name 1],
        Table[Name 2],
        "Count1Sum", SUM ( Table[Count 1] ),
        "Count2Sum", SUM ( Table[Count 2] ),
        "SumCountSum", SUM ( Table[SumCount] )
    )
RETURN
    SUMX ( Summary, ( [Count2Sum] - [Count1Sum] ) * [SumCountSum] )
1 голос
/ 08 октября 2019

Вы не хотите измерять в этом случае, скорее вам нужен новый столбец,

Та же формула, но новый столбец даст желаемый результат.

Column = ('Table (2)'[Count1]-'Table (2)'[Count2])*'Table (2)'[SumCount]

enter image description here

...