В PowerPivot неверные итоги поля

У меня есть базовый набор данных с кучей слайсеров, который примерно выглядит так:

       Hours    SpreadPerHr      Spread
       5.00        5.00          25.00
       10.00       2.00          20.00
       8.00       10.00          80.00

Где Spread - это вычисленное значение, где Spread = Hours * SpreadPerHour. Проблема в том, что итоговые значения для этих столбцов также соответствуют этой формуле, поэтому она выглядит следующим образом:

       Hours    SpreadPerHr      Spread
       5.00        5.00          25.00
       10.00       2.00          20.00
       8.00       10.00          80.00
Total: 23.00      17.00         391.00

И в то время как общее количество часов просто отлично, SpreadPerHour является динамическим, и Spread также хорош. Неправильно говорить Total Spread = Total Hours * Total SpreadPerHour. Итоги должны быть:

Total: 23.00      17.00         125.00 

Есть ли способ, которым я могу сделать Excel оставить итоговые значения для часов как есть, но суммировать столбец для Spread вместо умножения итогов?

2 ответа

Решение

Вот что я думаю о вашей модели Power Pivot:

У вас есть расчетный показатель для спреда, который я обозначил SpreadCalc1, Проблема с этим заключается в том, что он выполняет агрегацию до того, как умножит. Эта операция должна выполняться построчно, а затем агрегироваться. Таким образом, вместо вычисленной меры вам нужно создать вычисляемый столбец и затем суммировать этот столбец.

Столбец, который я пометил как SpreadCalc имеет формулу =[Hours] * [SpreadPerHr], Расчетная мера я назвал Spread просто Sum([SpreadCalc]), Вы можете видеть, что всего 125, а не 391.

Я знаю, что это может быть немного излишним, но я бы предложил немного другой подход.

Добавление вычисляемых столбцов в "маленькие" таблицы - это хорошо, но это может вызвать серьезные проблемы с производительностью больших баз данных.

Поэтому, чтобы решить вашу проблему, я считаю, что "правильный" способ - использовать функцию SUMX.

Он рассчитывает выражение специально для каждой строки, что именно то, что вам нужно. И это разумно с точки зрения производительности (нет необходимости добавлять вычисляемые столбцы или выполнять какие-либо манипуляции с исходными данными).

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

SUMX(YourTable, [Sum Hour] * [Sum SpreadPerHr])

Другие вопросы по тегам