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;
下图是我的要求
第一个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;