0

我有一个看起来像这样的计算成员:

Asian Weighted = ([Measures].[Asian] * [Measures].[Population]) 

我的 MDX 查询如下所示:

WITH
MEMBER [Measures].[AsianPop] AS 
(([Measures].[Asian Weighted], [Jurisdiction.BTA].[BTA].&[51]) / ([Jurisdiction.BTA].[BTA].&[51], [Measures].[Population]))
SELECT 
       {[Measures].[AsianPop]} ON 0
FROM 
       [Selection Statistics]

问题出在分子上。亚洲和人口在相乘之前都是求和的。有没有一种直接的方法可以在 MDX 中进行加权平均?

4

1 回答 1

1

您在评论中描述的解决方案 - 预先计算要求和的度量 - 是最好的方法。理论上,您可以纯粹在 MDX 中实现正确的计算,但这很复杂,而且在很多情况下——至少在 Analysis Services 中,我没有使用 Mondrian 的经验——真的很慢。您必须明确指示 MDX 引擎在叶级进行乘法运算,然后进行聚合。您可以使用类似LeavesDescendants的函数进入叶级。您将不得不考虑需要下降到叶级别的属性,以及可能不需要的属性。我的假设 - 就 Analysis Services 而言 - 因为它使用自定义聚合,所以不使用所有使多维数据集快速的内置聚合。

于 2013-10-30T07:44:44.800 回答