解析器:'SCOPE' 的语法不正确

Parser: The syntax for 'SCOPE' is incorrect

我正在学习 MDX,但在使用 SCOPE 时遇到了问题。

作为测试,我正在尝试仅为 2011 财年创建一个新度量,但是 有语法错误。

它不是 SSAS 脚本中的创建计算量度,而是 SSMS 中的查询。

任何帮助或指点都会很棒。

 WITH MEMBER [Measures].[Test Scope]
    AS 1
    (
     SCOPE ([Measures].[Test Scope]);
      SCOPE ([Date].[Fiscal Year].&[2011]);
       THIS = [Measures].[Reseller Order Quantity] + 10000;
      END SCOPE;
     END SCOPE;
    )

SELECT 
{[Measures].[Reseller Order Quantity],[Measures].[Test Scope]} ON COLUMNS
,[Date].[Fiscal Year].[Fiscal Year].MEMBERS ON ROWS
FROM [Adventure Works]

查询 (4, 2) 解析器:'SCOPE' 的语法不正确。

您不能在查询中使用范围语句。它必须在多维数据集的 MDX 脚本中或在会话上下文中的 运行 中定义。处理此问题的最常见方法如下。

WITH MEMBER [Measures].[Test Scope] AS 
 IIF(
  [Date].[Fiscal Year].CurrentMember is [Date].[Fiscal Year].&[2011],
  [Measures].[Reseller Order Quantity] + 10000,
  NULL
 )
SELECT 
{[Measures].[Reseller Order Quantity],[Measures].[Test Scope]} ON COLUMNS
,[Date].[Fiscal Year].[Fiscal Year].MEMBERS ON ROWS
FROM [Adventure Works]

在 MDX 查询中也有非常古老的 MDX 语法 CELL CALCULATION,我建议不要在没有经过测试的情况下使用,因为它很少使用。在我的脑海中,它看起来像这样。它可以“作用于”任何度量或计算的度量或元组。在这里,我们确定了空计算度量的范围。

WITH MEMBER [Measures].[Test Scope] AS 
 NULL
CELL CALCULATION [Test Scope Calc] 
 FOR '([Measures].[Test Scope],[Date].[Fiscal Year].&[2011])'
 AS '[Measures].[Reseller Order Quantity] + 10000'
SELECT 
{[Measures].[Reseller Order Quantity],[Measures].[Test Scope]} ON COLUMNS
,[Date].[Fiscal Year].[Fiscal Year].MEMBERS ON ROWS
FROM [Adventure Works]