MDX:计算的尺寸?

问题描述:

我不知道这是可能的,或者没有,或者如果我有限的MDX的知识是推动我在错误的方向......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。

因为首先对WHERE子句进行评估,所以IIF中的.CurrentMember函数只会看到“所有产品类别”。在这种情况下,[Products]。[Product Category] ​​.CurrentMember.Name永远不会等于“Some Category”,因为上下文中唯一的产品类别是“All Product Cateogories”。

一种可能的解决办法是做一个计算如下所示:

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] 

你也可以做在计算脚本中的作用域assignement在你的立方体做这样的事情。