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