MDX - avg功能在添加“where”过滤器时无法正常工作

时间:2012-08-21 13:12:57

标签: mdx average

问题

下面我的MDX没有返回我期望的平均毛利数。

MDX

select NON EMPTY {Hierarchize({[New Repeat].[New Repeat].[New]})} ON COLUMNS,
NON EMPTY {Hierarchize({[Measures].[Order Count], [Measures].[Total Gross Profit], [Measures].[Average Gross Profit]})} ON ROWS
from [USAOrders]
where {({{[Voucher Code].[ABC], [Voucher Code].[DEF]}})}

返回:

New Repeat = New

订单数= 13

总毛利= 438.03

平均毛利= 24.668

(平均毛利润应为438.03 / 13 = 33.69)

如何推导出数字

从此MDX派生的SQL返回2行:

new repeat voucher_code | order_count | total_gross_profit | avg_gross_profit    

       "ABC"                    2                23.26      11.63                
       "DEF"                   11               414.77      37.7063636363636

因此,看看数字,看起来MDX计算出所有指定凭证的平均毛利,方法是将每张凭证的平均毛利加起来,再除以不同凭证的行数(在这种情况下为2) ):

e.g。 (11.63 + 37.7063636363636)/ 2 = 24.668

然而,为了获得正确的数字,它应该将总毛利中的值相加并除以原始数据中的行数:

e.g。 (23.26 + 414.77)/ 13 = 33.69

(在多维数据集中,总利润和平均毛利润是使用毛利润指标/列上的总和和平均函数定义的度量。)

有没有办法解决问题以获得正确的数字?

非常感谢任何建议。

1 个答案:

答案 0 :(得分:0)

您的MDX非常简单。它只是从立方体中提取数字,而不是以任何方式调整它们。如果存在错误,则必须使用agregation方法或测量OLAP多维数据集中的计算。

我相信您希望使用SOLVE_ORDER命令指示多维数据集执行计算以首先获取total_gross_profit,然后执行平均计算。对不起,我不能给你一个插入的确切语法;你必须阅读文档。