MDX脚本在计算平均值时忽略零

时间:2016-01-15 18:50:00

标签: ssas mdx

我正在尝试使用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的记录。关于我如何解决这个问题的任何建议?

1 个答案:

答案 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