我对MDX
很新,并且有一个基本问题。我想要一个计算的度量,它为小于指定日期的日期返回一个值,如果大于指定日期则返回另一个值。我试过了:
with member [measures].[tempmeasure] as
IIF
(
[Date].[Date].CurrentMember < [Date].[Date].&[20100501]
, 1
, 2
)
select
[Date].[Date].Members
*
[measures].[tempmeasure] on columns
from [MyCube]
这似乎不起作用。那是使用MS SSAS 2008
。
我有什么想法可能做错了吗?
答案 0 :(得分:2)
使用:
IIF([Date].[Date].CurrentMember < [Date].[Date].&[20100501], 1, 2)
您要比较两个元组值,而不是日期成员本身。 你可以看一下here关于元组,集合等的教程......
当您使用AS时,我认为您可以使用DataDiff函数计算两个日期之间的天数:
DateDiff("d", [Date].[Date].CurrentMember.MemberValue, [Date].[Date].&[20100501].MemberValue )
否则,您可能会有一些可用于此目的的成员属性:
IIF([Date].[Date].CurrentMember.Properties( 'prop-name', TYPED ) < [Date].[Date].&[20100501].Properties( 'prop-name', TYPED ) , 1, 2)
干杯。
答案 1 :(得分:1)
IIF期望一个返回布尔值的逻辑表达式。我认为在你的情况下
[Date].[Date].CurrentMember
将返回维值,即集合。在这种情况下,小于运算符将导致语法错误。
答案 2 :(得分:1)
请使用以下表达
IIF
(
[Date].[Date].Currentmember.MemberValue <
[Date].[Date].&[20100501].MemberValue
, 1
, 2
)
我测试过它按预期工作.....
如果您有任何疑问,请与我们联系