我正在尝试使用MDX创建计算平均值的计算成员。我有两项措施,[高中GPA]和[高中GPA]。如果[高中GPA]是数字,则[高中GPA]设置为1,否则它为0.因此,在过去,以下计算成员的工作正常。
case
when [MEASURES].[Has High School GPA] is null
or [MEASURES].[Has High School GPA] = 0
then null
else
[MEASURES].[High School GPA] / [MEASURES].[Has High School GPA]
end
现在,我需要从平均计算中排除[高中GPA] = 0.00,即使[高中GPA]等于1.所以,我修改了我的脚本如下。
case
when [MEASURES].[Has High School GPA] IS null
or [MEASURES].[Has High School GPA] = 0
or [MEASURES].[High School GPA] = 0
then null
else
[MEASURES].[High School GPA] / [MEASURES].[Has High School GPA]
end
但是,我的平均值仍包括[高中GPA] = 0.00的记录。关于我如何解决这个问题的任何建议?
答案 0 :(得分:1)
解决此问题的最简单方法是在DSV中的该表上创建计算列。计算应该是:
NULLIF(GPA,0)
然后在使用该列的度量上确保将NullHandling属性设置为Preserve。这应该确保0和Null都为Null。
顺便说一下,在MDX中,IS NULL语法不是你想要的。请改用IsEmpty()。但在这种情况下,它是多余的,因为MDX中的Null = 0。所以适当的MDX应该是:
case
when [MEASURES].[Has High School GPA] = 0
or [MEASURES].[High School GPA] = 0
then null
else
[MEASURES].[High School GPA] / [MEASURES].[Has High School GPA]
end