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功能的动态使用的主要内容,如果未能解决你的问题,请参考以下文章

使用 MDX 以具有与“GROUP BY”相同的功能,以仅显示一次项目,即最大值

MDX:按度量的表值过滤成员集

使用 IIF 和 SUM 的 MDX

如何通过 saiku 直接运行 MDX 查询

MDX 查询以根据其登录 ID 获取员工 ID

生产 Gatsby 博客未在 MDX 文件中呈现 TailwindCSS 类