2016-11-02 2 views
1

У меня есть следующие данные в Spotfire, для которых я хотел бы показать относительный индекс продаж на продукт по сравнению с выбранным базовым планом.Расчет относительного индекса продаж в Spotfire по сравнению с продажами в 1 выбранном базовом плане

enter image description here

Как показано на рисунке выше, можно вычислить индекс по сравнению с предыдущим планом следующим над утверждением:

100 * (Sum([Sales]) - Sum([Sales]) OVER (PreviousPeriod([Axis.Columns])))/
Sum([Sales]) OVER (PreviousPeriod([Axis.Columns])) 

Однако это решение имеет следующие три недостатка:

  1. Он сравнивает все продажи с продажами в предыдущем плане вместо одного базового плана. Изменение инструкции OVER для использования FirstNode не всегда работает, потому что данные в реальном приложении импортируются из базы данных на основе запроса. Это приводит к тому, что значение FirstNode не всегда доступно.
  2. Заказ планов основан на строковом значении вместо номера плана (второй символ в имени плана).
  3. Базовый план не подбирается. В реальном приложении создается свойство документа «SelectedPlan» (содержащее выбранное значение в выпадающем списке).

Как можно рассчитать относительный индекс продаж по сравнению с продажами одного выбранного базового плана?

+0

почему не просто 'над ([Product])' против пытается взломать порядок ваших данных? Проблема 'FIRST NODE' будет реплицирована с помощью' MAX' и большинства агрегатов без использования функции номера строки. Можете ли вы предоставить некоторые примеры данных и ожидаемый результат? – scsimon

ответ

1

После еще несколько исследований мы обнаружили, рабочий раствор:

100 * (Sum([Sales])/Sum(If([Plan] = '${SelectedPlan}',[Sales],0)) OVER All([Axis.Columns])) 
Смежные вопросы