SSAS:立方体中的计算

时间:2012-05-22 12:18:19

标签: scope expression ssas mdx

我需要将计算分为三组: - 仅适用于基础细胞(叶子) - 适用于所有细胞 - 仅适用于合并单元格(上层级别的单元格) 例如,我有层次结构:Year-Quarter-Month。 在“月”中的此层次结构的基本单元格,并在“年”和“季度”中合并单元格。

对于基本单元格,我可以写这个“范围”:

SCOPE (
   [Measures].[Value] ,
   [DimProducts].[Name].[Donut] , 
   [DimTime].[Month].CHILDREN       // month only
      );
THIS = [Measures].[Value]*2+100500;
END SCOPE;

而且我不知道如何编写巩固细胞的“范围”?我无法为每个层次结构级别创建“范围”,例如:

SCOPE (
   [Measures].[Value] ,
   [DimProducts].[Name].[Donut] , 
   [DimTime].[Quarter].CHILDREN    // quarter only
      );
...
END SCOPE;
SCOPE (
   [Measures].[Value] ,
   [DimProducts].[Name].[Donut] , 
   [DimTime].[Year].CHILDREN       // year only
      );
...
END SCOPE;

因为有许多维度和层次结构级别,所以必须对所有维度应用计算。 也许有一个简单的方法来解决我的问题?

1 个答案:

答案 0 :(得分:2)

您可以在SCOPE的子多维数据集表达式中使用MDX函数。

假设您的 Year-Quarter-Month 用户层次结构具有 Quarter Month 级别,您可以使用以下表达式来解决 Month 级别以上的级别。

SCOPE ( [Measures].[Value]
      , [DimProducts].[Name].[Donut]
      , Descendants( [DimTime].[Year-Quarter-Month].[All]
                   , [DimTime].[Year-Quarter-Month].[Quarter]
                   , SELF_AND_BEFORE
                   )
      );
...
END SCOPE;

参考: