我使用计算成员从特殊属性的度量中减去特殊值。
在伪代码中,它应该像这样工作:
CASE Attribute
WHEN (Attribute = A) THEN Measure_of_A - 14
WHEN (Attribute = B) THEN Measure_of_B - 2
ELSE 5
我在计算成员
中的MDX中尝试了这个CASE [D Software].[Dim Software].CURRENTMEMBER
WHEN [D Software].[Dim Software].[Feature Desc].&[A]&[AAA]
THEN ([D Software].[Dim Software].[Feature Desc].&[A]&[AAA],[Measures].[Status6]) - 14
WHEN [D Software].[Dim Software].[Feature Desc].&[B]&[BBB]
THEN ( [D Software].[Dim Software].[Feature Desc].&[BBB]&[B],[Measures].[Status6]) - 2
ELSE '5'
END
IT工作正常,但总计的汇总值总是错误的。 我得到的结果如下:
Attribute Value
AA -14
Total_AA 5
BB -2
Total_BB 5
Grand_Total 5
有人给我一个建议吗?我的失败在哪里?为什么没有正确的值汇总?
答案 0 :(得分:1)
计算成员的计算在多维数据集执行所有聚合后执行。 您需要在计算中明确定义聚合,例如
CASE [D Software].[Dim Software].CURRENTMEMBER
WHEN [D Software].[Dim Software].[Feature Desc].&[A]&[AAA]
THEN ([D Software].[Dim Software].[Feature Desc].&[A]&[AAA],[Measures].[Status6]) - 14
WHEN [D Software].[Dim Software].[Feature Desc].&[B]&[BBB]
THEN ( [D Software].[Dim Software].[Feature Desc].&[BBB]&[B],[Measures].[Status6]) - 2
WHEN [D Software].[Dim Software].[Feature Desc].&[A]
THEN sum( [D Software].[Dim Software].[Feature Desc].&[A].children,[Measures].[Status6])
WHEN [D Software].[Dim Software].[Feature Desc].&[B]
THEN sum( [D Software].[Dim Software].[Feature Desc].&[B].children,[Measures].[Status6])
WHEN [D Software].[Dim Software].[Feature Desc].[All]
THEN sum( [D Software].[Dim Software].[Feature Desc].[All].children,[Measures].[Status6])
ELSE '5'
END
以这种方式在MDX计算成员中编写聚合逻辑是不可维护的。您应该使用范围来处理这种逻辑。