使用动态 mdx 表达式的单元格计算



我一直在尝试创建一个(有点复杂?)单元格计算,我需要使用动态公式但不起作用。最后,我将 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] ) "不起作用。它将该字符串设置为单元格值。

这不是真正的单元格计算,而是导致我出现问题的部分。我将不胜感激任何建议/答案。

此致敬意丹尼尔

只需使用

'(StrToMember([CategoryFcst].item(0).UNIQUENAME),[Measures].[Amount] )'

据我了解,此表达式周围引号的必要性是由于此处描述的分析服务的历史。而且,如同一篇文章所述,在 Analysis Services 的 2005 版中,WITH 子句中的成员和集合定义对此进行了更改,但显然不适用于很少使用的单元格计算。因此,这里的引号不是将字符串括起来的东西,而是或多或少是将表达式括起来的语法要求。

我实际上不确定您将如何在此表达式中使用单引号。但是,您可以在 MDX 表达式中使用双引号或单引号来将字符串括起来。因此,您很少会遇到在这种类型的表达式中绝对需要单引号的必要性。

最新更新