MDX:IIf 尺寸值的条件始终为 false

Neo*_*Neo 3 sql-server ssas mdx iif ssas-2008

我试图在列中产生不同的输出,具体取决于维度的值是否[Scenario].[Option]+5我尝试使用该IIf函数实现的值。

WITH MEMBER [XorY] AS
(
    IIf([Scenario].[Option] = +5, 'X', 'Y')
    --IIf([Scenario].[Option].&[+5], 'X', 'Y')
)
SELECT
NON EMPTY
(
    [Scenario].[Option].[Option]
) ON ROWS,
NON EMPTY
(
    [XorY]
) ON COLUMNS
FROM [RePro]
WHERE
(
    [ABC].[ABC].[Val]
) CELL PROPERTIES VALUE
Run Code Online (Sandbox Code Playgroud)

但是,使用上述任一语句IIf始终[XorY]Y的值无关[Scenario].[Option]。看来我所做的比较在语法上是错误的。我该怎么做呢?我注意到如果我在条件[Measures]的维度中使用计算成员,效果会更好IIf,但在我的情况下这是不可能的 - 我必须使用[Scenario].[Option].

感谢您收到的任何帮助:)

Ric*_*ick 6

当您使用成员语句时,通常需要使用 currentmember,因为它引用当前单元格。将其与成员值结合起来,您就得到了值。在这种情况下,我将预期的答案用引号引起来。

WITH MEMBER [XorY] AS
(
   IIf([Scenario].[Option].currentMember.membervalue = "+5", 'X', 'Y')
)
Run Code Online (Sandbox Code Playgroud)

如果你要与一个数字进行比较,你会这样做:

WITH MEMBER [XorY] AS
(
   IIf(STRTOVALUE([Scenario].[Option].currentMember.membervalue) = 5, 'X', 'Y')
)
Run Code Online (Sandbox Code Playgroud)

如果 [Scenario].[Option] 中并非所有成员都是数字,这可能会返回错误。转换还存在潜在的性能问题。

  • 谢谢!我实际上在 Deepak Puri 的答案中找到了这个答案:http://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6e4eb06-aba4-4aa1-9c28-65f264464832 The TechNet on `IIf` (http://social.msdn.microsoft.com/Forums/sqlserver/en-US/d6e4eb06-aba4-4aa1-9c28-65f264464832 /technet.microsoft.com/en-us/library/ms145994.aspx) 仅涵盖“[Measures]”维度,不涵盖非“[Measures]”维度。我确信这是一件很麻烦的事情,但我花了一整天的时间来解决这个问题。有趣的是,仅使用“MemberValue”而不是“CurrentMember.MemberValue”也可以 - 但不确定有什么区别。 (2认同)