Многомерные выражения: как рассчитать заработанную премию (т.е. пропорциональную меру между двумя временными измерениями)

#mdx

#многомерные выражения

Вопрос:

Простой куб имеет 1 меру и три временных измерения:

  • [Меры].[Выплаченная сумма]
  • [Дата оплаты]
  • [Дата начала обложки]
  • [Дата окончания обложки]

Заработанная премия = 0%, если дата начала покрытия предшествует рассматриваемому периоду 100%, если дата окончания покрытия прошла еще [Конец покрытия — начало покрытия] * Дни с начала

Для любой заданной ячейки, как мне просмотреть все даты начала и окончания и определить, какова сумма, заработанная за период?

Комментарии:

1. Марк, какой OLAP-сервер вы используете? .. проблема здесь в том, как преобразовать вашу премию во что-то, что можно агрегировать с течением времени.

Ответ №1:

Я предполагаю, что отсутствует другое измерение, например, такое, как [ContractID] , если нет, то, что следует после, не имеет реального смысла.

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

Поэтому я бы добавлял в свой куб премию за каждую сделку за период [Дата начала покрытия], [Дата окончания покрытия] с ежедневной премией за этот контракт. Получив это, вы можете легко агрегировать эту меру по своим измерениям. -> Теперь ежедневная премия больше не зависит от даты покрытия..

Многомерные выражения не являются реальной вычислительной машиной, поэтому вы выводите систему за ее пределы. Решая это с помощью областей, вычисленные меры могут привести к удивительно медленному кубу…