MDX AVG功能的动态使用
Posted
技术标签:
【中文标题】MDX AVG功能的动态使用【英文标题】:Dynamic use of MDX AVG function 【发布时间】:2011-11-30 04:25:28 【问题描述】:任何人都对如何构建动态的平均度量有建议 - 它没有指定特定的切片,而是使用您当前的视图?我正在使用前端 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].[IndicatorA]”为“[Measures].[AmountA]”指定一个简单的平均值,效果很好 - “[IndicatorA]”总计为“[AmountA]”的非空值的数量。无论在视图中选择什么维度,这也很有效 - 它总是除以已过滤的行数。
但是 [AmountB] 呢?我没有空指示符列。对于我当前视图中过滤的任何行,我想获得 [AmountB] 的平均值。如果我尝试使用行数作为一个简单的公式(伪代码“[Measures].[AmountB] / Count([Measures].[Key])”)我会得到错误的结果,因为它正在计算所有平均为空行。
所以,我需要一种方法来使用 AVG 函数来指定 [AmountB] 在“我当前正在过滤的任何行,基于我当前使用的任何维度”的集合上的平均值。如何指定这个动态集?
我已经尝试了 AVG 函数的几种不同用法,它们要么返回 null,要么总结为巨大的数字,显然不是我正在寻找的平均值。
谢谢- 马特
【问题讨论】:
【参考方案1】:抱歉,我的第一个建议是错误的。如果您无权访问 OLAP 多维数据集,则无法为此目的编写任何 mdx 查询(恕我直言)。因为,您在此访问级别中没有任何详细数据(来自事实表),您只能使用来自多维数据集的聚合数据和维度。 否则(如果您有权访问 olap db),您可以在度量值组中创建此指标(非 NULL 行数),然后将其用于 AVG 计算(作为多维数据集中的计算成员或您的mdx 查询)。
【讨论】:
Max,差不多了 - 我现在正在寻找的是如何将 Your Set 指定为动态集 - 不是任何特定的切片,而是我目前使用 OLAP 工具过滤的任何集合. 我将能够尝试改进此查询并在不久的将来更新答案。以上是关于MDX AVG功能的动态使用的主要内容,如果未能解决你的问题,请参考以下文章