MDX计算度量

时间:2018-03-15 19:16:41

标签: ssas mdx mdxstudio mdx-query

以下是我在图片中的要求

Sample Data

第一个表格至少是粒度。平均值由Date + Place计算。因此平均值为565 = (2865/5)

来到第二个表。位置702的平均值是114,右边是704,它是866也是正确的。但是最终的ans与所有5个记录的平均值相同。

但是我的输出应该像单Date + Place的{​​{1}}级别一样平均但是当选择了两个位置时它应该在地方级别平均但总和输出总和。最终值应该是< strong> 980 (总和(114 + 866))

有人可以为此找到解决方案吗?

2 个答案:

答案 0 :(得分:1)

与SSAS Multidimensional中的任何平均值一样,您需要创建两个物理度量。第一个是A的总和,即AggregateFunction = Sum。第二个是行数,即AggregateFunction = Count。

实施计算的更快捷方式是使用此计算方法:

SUM(
 EXISTING [Place].[Place].[Place].Members,
 DIVIDE( [Measures].[Sum of A], [Measures].[Count of Rows] )
)

但是,如果您希望获得更好的性能并正确处理多选过滤器,那么创建一个名为Avg A的物理度量,即AggregateFunction =总结SQL表中的新列,该值始终为0.然后覆盖其中的值使用以下范围声明进行衡量:

SCOPE([Place].[Place].[Place].Members);
     [Measures].[Avg A] = DIVIDE( [Measures].[Sum of A], [Measures].[Count of Rows] );
END SCOPE;

答案 1 :(得分:0)

试试这个:

AvgA = SUMX(SUMMARIZE(Table2, Table2[Place], "A", AVERAGE(Table2[A])), [A])

这将按每个A进行平均Place分组,然后将它们相加作为小计。