В 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])