MDX 计算量度

MDX Calculated Measure

下图是我的要求

第一个table至少是granularity.The avg是由Date + Place计算出来的。所以avg是565 = (2865/5)

来到第二个 table.The 位置 702 的平均值是 114,这是正确的,对于 704,它是 866,这也是 right.But 最后的答案与所有​​ 5 条记录的平均值相同.

,但是我的输出应该像单个Date + Place的avg在[= 10 = 10 =]的级别是 980 (总和(114+866))

有人可以解决这个问题吗?

试试这个:

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

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

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

执行计算的更快方法是使用此计算度量:

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

但是,如果您想获得更好的性能并正确处理 multi-select 过滤器,请创建一个名为 Avg A 的物理度量,它是 AggregateFunction=Sum off a new column in your SQL table 始终为 0。然后使用以下范围语句覆盖该度量中的值:

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