动态使用MDX AVG功能

时间:2011-10-03 19:33:07

标签: mdx average

任何人都有关于如何构建动态平均度量的建议 - 它没有指定特定切片,而是使用您当前的视图?我在前端OLAP查看器(Strategy Companion)中工作,我需要一个基于当前在数据视图中过滤的维度的“动态”实现。

我的事实表看起来像这样:

Key AmountA  IndicatorA  AmountB  Other Data
1   5        1           null     25
2   6        1           null     52
3   7        1           2        106
4   null     0           4        108

现在我可以为“[Measures]。[AmountA]”指定一个简单的平均值,其中包含“[Measures]。[AmountA] / [Measures]。[IndicatorA]”效果很好 - “[IndicatorA]”总结为“[AmountA]”的非空值数。无论在视图中选择了什么尺寸,这也很有用 - 它总是除以已经过滤的行数。

但是[AmountB]怎么样?我没有空指标列。对于我当前视图中已过滤的任何行,我想获得[AmountB]的平均值。如果我尝试使用行数作为一个简单的公式(伪造代码“[Measures]。[AmountB] / Count([Measures]。[Key])”)我得到错误的结果,因为它计算所有的平均值为空行。

所以,我需要一种方法来使用AVG函数来指定[AmountB]的平均值,超过“我当前正在过滤的任何行,基于我当前正在使用的任何维度”。如何指定此动态集?

我尝试了AVG功能的几种不同用途,它们要么返回null,要么归结为大数,显然不是我想要的平均值。

Thanks- 马特

1 个答案:

答案 0 :(得分:0)

抱歉,我的第一个建议是错误的。如果您无权访问OLAP多维数据集,则无法为此目的编写任何mdx查询(恕我直言)。因为,您在此访问级别中没有任何详细数据(来自事实表),并且您只能使用多维数据集中的聚合数据和维度。 否则(如果您有权访问olap db),您可以在度量值组中创建此度量标准(非NULL行数),然后将其用于AVG计算(作为多维数据集中的计算成员或在您的“WITH”部分中) MDX查询)。