解析器:“ SCOPE”的语法不正确

时间:2019-08-24 13:47:58

标签: ssas mdx

我正在学习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”的语法不正确。

1 个答案:

答案 0 :(得分:2)

您不能在查询中使用范围语句。它必须在多维数据集的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]