我对Power BI相当陌生,我一直在努力解决表中的总计问题。
我试图使用以下计算来计算平均百分比误差:/Actuals(Actuals-预测)
下面是我的数据集:

'MAPEX‘列中的总数实际上是'AbsErr’/ 'Actuals‘列中总数的总和:(1457.27 / 2786.27 = 0.52)。
我真正需要显示的是'MAPEX‘中的值之和,总数为5.88。
“MAPEX”列是具有以下定义的度量:
MAPEX = DIVIDE([AbsErr], sum(CUBE_PeriodicData[Actuals]),0)我不需要在表中的“总计”行中显示正确的总数,它可以作为一张卡片放在报表的其他地方,我只想知道DAX中是否有一个函数,我不知道列中的值是否垂直汇总?
发布于 2020-01-24 02:33:11
Seymour的回答看起来不错,但我想补充一点,在这个场景中,粒度很重要。
假设您有一个像这这样的星型模式,您可以用下面的公式定义度量总量预测、总实际误差、绝对误差和绝对百分比误差。
Total Forecast = SUM ( Forecast[Forecast] )
Total Actual = SUM ( Actual[Actual] )
Absolute Error = ABS ( [Total Forecast] - [Total Actual] )
Absolute Percentage Error = DIVIDE ( [Absolute Error], [Total Actual] )这是你到目前为止要做的事情。

在这里,您要问的是如何计算绝对百分比误差之和。
根据定义,绝对百分比误差表示绝对误差除以实际总的值,而不考虑钻取级别。因此,在总数中,它显示为0.52,即绝对误差(1,457.27)除以实际总数(2,786.27)。如果您希望它在总计级别上进行不同的计算,则需要显式地实现此逻辑。
您的要求将更明确地说明如下:
实现此逻辑所需的函数是SUMX。此外,您可以显式地使用SUMMARIZE来确保计算特定粒度中的绝对百分比错误。
MAPEX = SUMX (
SUMMARIZE (
Forecast,
'Product'[ItemName],
'Calendar'[Year],
'Calendar'[Month]
),
[Absolute Percentage Error]
)

到目前为止,我一直在强调粒度。这是因为如果您没有意识到粒度,结果在某些情况下可能看起来很奇怪。
在上面的图像中,MAPEX看起来与绝对百分比误差相同,但总误差除外。然而,如果你按季度而不是按月进行向下钻,你会注意到这是完全不一样的。

绝对百分比误差在季度级别显示绝对误差和总实际值的商数,而MAPEX仍在汇总绝对百分比误差的月值,尽管表中没有显示月份。
所以,我的最后一句话是,每当你发明像MAPEX这样的新方法时,你总是需要问自己,它是否对每一个可能的颗粒都有意义。
发布于 2020-01-21 16:22:32
解决这一问题的一种方法是使用一个名为MAPEX的自定义列,而不是用于计算的度量。如果有特殊的原因,你需要使用DAX,请随时让我知道,我可能会想出一些事情。
列=ABS((实际操作-预测)/Actuals)
编辑:以防万一,您创建新列的方式是在视图选项卡中使用此按钮。

或者,您可以在看来适合我的查询编辑器中创建自定义列。

发布于 2020-01-21 22:40:27
就这样吧
变量_mytable = SELECTCOLUMNS(FactTable,"MAPE",ABS(实际操作-预测)/Actuals)返回Sumx(_mytable,MAPE)
https://stackoverflow.com/questions/59843180
复制相似问题