Ssas 用动态mdx表达式进行单元计算

Ssas 用动态mdx表达式进行单元计算,ssas,mdx,olap-cube,Ssas,Mdx,Olap Cube,我已经尝试了一段时间来创建一个(有点复杂?)单元计算,在这里我需要使用一个动态公式,但不起作用。最后,我得到了mdx表达式作为单元格值,这是错误的。以下是我的表达: ----------------------------------------------------------------------- ---SET With 2 elements(Sales Fcst(20131223), Sales Fcst(2014)) WITH SET [CategoryFcst] AS FILT

我已经尝试了一段时间来创建一个(有点复杂?)单元计算,在这里我需要使用一个动态公式,但不起作用。最后,我得到了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] )'
据我所知,围绕这个表达式引用的必要性是由于AnalysisServices的历史。而且,正如同一篇文章中所述,在Analysis Services的2005版中,
WITH
子句中的成员和集合定义发生了更改,但显然不适用于很少使用的单元格计算。因此,这里的引号不是用来封闭字符串的,而是用来封闭表达式的语法要求


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

我以前见过这种情况,可能与创建集合的时间有关。您能用集合定义替换计算中的[CategoryFcst]吗?它可能不是最优的,但也许您可以在以后对其进行优化?也许您可以创建一个层次结构来对这些成员进行分类,而不是从标题中查找它们。谢谢你的回答。如果我替换集合定义的[CategoryFcst],我会得到一个空字符串,mdx表达式的结果是:(StrToMember(“”,[Measures].[Amount])。我需要查找成员的标题,因为标题将发生变化,所以我不能直接放置这样的内容:[Catgeory].[Catgeory].[Sales Fcst(20140124)]。将
'(strotmember([CategoryFcst].item(0).UNIQUENAME),[Measures].[Amount])
满足您的需求吗?你好,弗兰克。谢谢。是的,它符合我的要求。你对此有合乎逻辑的解释吗?我在回答中解释了背景。