1

我不知道这是否可能,或者我对 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。

4

1 回答 1

3

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

一种可能的解决方法是进行如下计算:

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]

您还可以在多维数据集的计算脚本中执行范围分配来执行此类操作。

于 2008-11-10T02:16:47.247 回答