【问题标题】:MDX: Calculated Dimensions?MDX:计算尺寸?
【发布时间】:2010-09-19 21:20:33
【问题描述】:

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

【问题讨论】:

    标签: filtering mdx where dimensions


    【解决方案1】:

    因为首先评估 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]
    

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      • 2013-10-10
      • 2019-11-24
      • 1970-01-01
      • 1970-01-01
      • 2021-08-28
      相关资源
      最近更新 更多