我一直在尝试创建一个(有点复杂的?)单元格计算,我需要使用动态公式但不起作用。最后我得到了mdx表达式作为单元格值,这是错误的。这是我的表达:
-----------------------------------------------------------------------
---SET With 2 elements(Sales Fcst(20131223), Sales Fcst(2014))
WITH SET [CategoryFcst] AS
FILTER([Category].[Category].children, InStr([Category].[Category].CURRENTMEMBER.MEMBER_CAPTION,"Sales Fcst") > 0 )
CELL CALCULATION SalesPlanAch FOR
'([Category].[Category].[Sales Plan Att%], [Measures].[Amount])'
AS
'(StrToMember("' + [CategoryFcst].item(0).UNIQUENAME + '"),[Measures].[Amount] )'
--The formula expression result is: (StrToMember("[Category].[Category].&[29]"),[Measures].[Amount] )
SELECT [Time].[Calendar Time].[Quarter].members on columns,
[Category].[Category].children on rows
from [AllData]
WHERE ([Measures].[Amount])
-----------------------------------------------------------------------
如果我直接将'(StrToMember("[Category].[Category].&[29]"),[Measures].[Amount])
'作为单元格计算公式,它就会起作用,但我需要动态计算它。
另外,如果我把'(StrToMember("' + '[Category].[Category].&[29]' + '"),[Measures].[Amount] )
'不起作用。它将该字符串设置为单元格值。
这不是真正的细胞计算,而是导致我出现问题的部分。 我很感激任何建议/答案。
祝你好运, 丹尼尔
答案 0 :(得分:1)
只需使用
'(StrToMember([CategoryFcst].item(0).UNIQUENAME),[Measures].[Amount] )'
据我所知,围绕此表达式引用的必要性归因于Analysis Services as described here的历史记录。并且,如同一篇文章中所述,在Analysis Services的2005版本中,对WITH
子句中的成员和集定义进行了更改,但显然不适用于很少使用的单元格计算。因此,这里的引号不是包含字符串的东西,而是或多或少地包含表达式的语法要求。
我实际上不确定如何在此表达式中使用单引号。但是您可以在MDX表达式中使用双引号或单引号来包含字符串。因此,您很少会遇到在这种表达式中绝对需要单引号的必要性。