我有一个看起来像这样的计算成员:
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中进行加权平均?
答案 0 :(得分:1)
您在评论中描述的解决方案 - 预先计算衡量标准 - 是最好的方法。从理论上讲,你可以纯粹在MDX中实现正确的计算,但这很复杂,在很多情况下 - 至少在Analysis Services中,我没有使用Mondrian的经验 - 真的很慢。您必须明确指示MDX引擎在叶级别上进行乘法,然后进行聚合。您可以使用Leaves
或Descendants
等函数转到叶级。您将不得不考虑需要进入叶级别的属性,以及可能不需要的属性。我的假设 - 就Analysis Services而言 - 是因为它使用自定义聚合,所以不会使用快速建立多维数据集的所有内置聚合。