我对Power BI还是陌生的,并且一直在为表格中的总计问题苦苦挣扎。
我正在尝试使用以下计算方法来计算平均平均百分比误差(MAPE): [ABS(实际-预测)/实际]
下面是我的数据集:
“ MAPEX”列中的总数实际上是“ AbsErr” /“实际”列中的总数之和:(1457.27 / 2786.27 = 0.52)。
我实际上需要显示的是“ MAPEX”中的值之和,总计为5.88。
“ MAPEX”列是具有以下定义的度量:
MAPEX = DIVIDE([AbsErr], sum(CUBE_PeriodicData[Actuals]),0)
我不需要在表格的“总计”行中显示正确的总计,可以将其作为卡片放置在报表的其他位置,我只想知道DAX中是否有我要的功能不知道哪个会垂直汇总列中的值?
答案 0 :(得分:1)
Seymour的回答看起来不错,但我想补充一点,在这种情况下粒度很重要。
假设您拥有this之类的星型模式,那么可以很容易地使用以下公式定义度量“总预测”,“总实际”,“绝对误差”和“绝对百分比误差”。
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)时,您总是需要问问自己,对于每种可能的粒度,它是否有意义。
答案 1 :(得分:0)
解决此问题的一种方法是使用标题为MAPEX的自定义列,而不是进行计算的度量。如果出于特殊原因需要使用DAX,请随时告诉我,我也许可以找出解决方法。
列= ABS(([Actuals]-[Forecast])/ [Actuals])
编辑:以防万一,创建新列的方式是在视图标签中使用此按钮。
或者,您可以在看起来对我有用的查询编辑器中创建自定义列。
答案 2 :(得分:0)
一起去
VAR _mytable = SELECTCOLUMNS(事实表,“ MAPE”,ABS(实际-预测)/实际)) 返回 Sumx(_mytable,[MAPE])