MDX: расчетные размеры? - PullRequest
       8

MDX: расчетные размеры?

1 голос
/ 29 октября 2008

Я не знаю, возможно ли это или нет, или мое ограниченное знание MDX толкает меня в неправильном направлении ...

Куб, с которым я имею дело, имеет два разных измерения для дат: [Statement Dates] и [Premium Dates]. Далее в иерархии каждый выглядит так:

[Statement Dates].[Statement Year].[2008]  
[Payment Dates].[Payment Year].[2008]

Для бизнес-логики, которую я реализую, мне нужно сделать что-то вроде:

select
  ({ [Measures].[Commission] }) on columns,
  ({[Products].[Product Category]}) on rows
from [Cube]
where
(
  IIF( [Products].[Product Category].CurrentMember.Name = "Some Category",
       [Statement Dates].[Statement Year].[2008], 
       [Payment Dates].[Payment Year].[2008] )
)

Поэтому мне нужно определить, какое измерение использовать для фильтрации года, исходя из того, какая категория продуктов используется.

Это анализирует нормально, и запрос выполняется, но цифры, кажется, указывают на то, что оператор IIF всегда возвращает false.

1 Ответ

3 голосов
/ 10 ноября 2008

Поскольку предложение WHERE оценивается первым, функция .CurrentMember в IIF будет видеть только «Все категории продуктов». В этом случае [Products]. [Product Category] .CurrentMember.Name никогда не будет равно «Некоторая категория», поскольку единственной категорией продукта в контексте является «Все категории продуктов».

Один из возможных способов обойти это сделать следующий расчет:

WITH MEMBER Measures.Commission2 as 
SUM(
{[Products].[Product Category].[Product Category].Members}
, IIF( [Products].[Product Category].CurrentMember.Name = "Some Category"
   , ([Statement Dates].[Statement Year].[2008],[Measures].[Commission])
   , ([Payment Dates].[Payment Year].[2008].[Measures].[Commission]) )
)
select  
   ({ [Measures].[Commission2] }) on columns
,  ({[Products].[Product Category]}) on rows
from [Cube]

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

...