MDX Scope与成员有关

时间:2013-09-20 19:39:59

标签: mdx cube

使用Adventure工作Cube,如果我运行以下代码(来自MS示例):

with 
Member [Measures].[Internet Sales Amount - Range]
AS aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] )

SELECT
{ [Measures].[Internet Sales Amount - Range] } ON COLUMNS,
{ [Product].[Category].Members } ON ROWS
FROM
[Adventure Works]

你得到了正确的结果。

但是,当我在计算选项卡中通过SCOPE命令实现类似功能时:

scope ([Product].[Category], [Measures].[Internet Sales Amount]);

    this = aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] );

end scope;

然后运行以下mdx查询:

SELECT
{ [Measures].[Internet Sales Amount] } ON COLUMNS,
{ [Product].[Category].Members } ON ROWS
FROM
[Adventure Works]

我得到了截然不同的结果。范围似乎忽略了日期范围或忽略了类别成员,我不确定是什么。在创建具有日期范围的新范围时,我在我的多维数据集上遇到类似的问题。

任何人都知道范围发生了什么?

1 个答案:

答案 0 :(得分:1)

使用

CREATE MEMBER CurrentCube.[Measures].[Internet Sales Amount - Range2] AS NULL;

scope ([Measures].[Internet Sales Amount - Range2]);
    this = aggregate ( [Date].[Fiscal].[Date].&[20080430]:[Date].[Fiscal].[Date].&[20080502] , [Measures].[Internet Sales Amount] );
end scope;

否则,当您在scope中使用的SCOPE内引用该度量时,可能会有无限递归。