MDX - 添加过滤器时'where'平均函数未按预期工作



问题

下面的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):

例如(11.63+37.7063636363636)/2=24.668

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

例如(23.26+414.77)/13=33.69

(在多维数据集中,Total和Average Gross Profit是使用毛利润度量值/列上的sum和avg函数定义的度量值)。

有没有办法解决这个问题以获得正确的号码?

非常感谢您的建议。

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

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

最新更新