Ssas 解析器';范围';不正确

Ssas 解析器';范围';不正确,ssas,mdx,Ssas,Mdx,我正在学习MDX,但在范围方面遇到了问题 作为一个测试,我试图为2011财年创建一个新的衡量标准,但 有语法错误 它不是SSAS脚本中的创建计算度量,而是SSMS中的查询 任何帮助或指点都会很好 WITH MEMBER [Measures].[Test Scope] AS 1 ( SCOPE ([Measures].[Test Scope]); SCOPE ([Date].[Fiscal Year].&[2011]); THIS =

我正在学习MDX,但在范围方面遇到了问题

作为一个测试,我试图为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”的语法不正确。

您不能在查询中使用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]

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

这真是太棒了,非常感谢Greg,我刚刚发现我也可以使用这个用例。因此,我有完整的图片,如果我也将其作为创建成员添加到多维数据集脚本中,我不需要作用域,我可以使用上面的IIF吗?很抱歉,如果这个简单的问题仍然在试图让我的头脑清醒过来,或者说,这和IIF声明是一样的,或者有区别?创建成员CURRENTCUBE.[Measures].[Test Scope]为NULL;范围(【日期】【会计年度】、【措施】【测试范围】;此=[度量].[经销商订单数量]+10000@RogerClerkwell在多维数据集MDX脚本中强烈建议使用范围方法来提高性能。这太棒了。非常感谢Greg,刚刚解决了我还可以在使用案例时使用它。因此,我有完整的图片,如果我也将其作为创建成员添加到多维数据集脚本中,我不需要作用域,我可以使用上面的IIF吗?很抱歉,如果这个简单的问题仍然在试图让我的头脑清醒过来,或者说,这和IIF声明是一样的,或者有区别?创建成员CURRENTCUBE.[Measures].[Test Scope]为NULL;范围(【日期】【会计年度】、【措施】【测试范围】;此=[度量].[经销商订单数量]+10000@RogerClerkwell在多维数据集MDX脚本中,强烈建议使用范围方法来提高性能。