如何使用带时间维度的 Case 语句在 SSAS 中为计算成员编写 MDX 查询
How to write a MDX query in SSAS for a calculated member using Case statement with Time Dimension
我有一个使用此公式计算的成员:
CASE
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) > 0
THEN 0
ELSE 1
END
这个计算成员按我的意愿工作,但是当我拉出一个像名称这样的维度成员时,即使在通过了年份的过滤器之后,当我通过这个计算成员时,它也会拉出所有年份的数据。
例如,如果我有 2000-2010 年的数据,那么当我将过滤器作为 2007 年通过时,该成员将提取所有年份的数据,显示空白值。一旦我删除了这个计算成员,它就可以正常工作,它只显示 2007 年的数据。我知道我在 MDX 中搞砸了,请帮助我,谢谢
我认为您的答案基本正确,但您需要将 0
换成 null
:
CASE
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) > 0 THEN 1
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) < 0 THEN 0
ELSE
NULL
END
我有一个使用此公式计算的成员:
CASE
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) > 0
THEN 0
ELSE 1
END
这个计算成员按我的意愿工作,但是当我拉出一个像名称这样的维度成员时,即使在通过了年份的过滤器之后,当我通过这个计算成员时,它也会拉出所有年份的数据。
例如,如果我有 2000-2010 年的数据,那么当我将过滤器作为 2007 年通过时,该成员将提取所有年份的数据,显示空白值。一旦我删除了这个计算成员,它就可以正常工作,它只显示 2007 年的数据。我知道我在 MDX 中搞砸了,请帮助我,谢谢
我认为您的答案基本正确,但您需要将 0
换成 null
:
CASE
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) > 0 THEN 1
WHEN SUM([Time].[Year].currentmember ,[Measures].[Amount]) < 0 THEN 0
ELSE
NULL
END