我的问题涉及三个指标,[接受百分比]、[上个月接受百分比]和[平均变化百分比]。
如果 [% Accepted] 为空,因为我们还没有该月的数据,那么我希望该列通过计算 [% Accepted Previous Month] + [Avg % Change] = "forecasted % 接受”
我可以让它这样做一个月,但我希望它在未来继续下去,例如:
如果 2023 年 1 月的 [% Accepted] 为空,则它会查找并找到 [% Accepted Previous Month] (10.3%) + [Avg % Change] (1.23%) = 11.53% 并将该值放入 2023 年 1 月
然后,对于 2023 年 2 月,它将使用 11.53% 作为其[上个月接受的百分比],并添加 2023 年 2 月的[平均变化百分比],并继续逐月使用之前计算的值作为新的上个月值。它看起来像这样:
月年 | % 接受 | 上个月接受的百分比 | 平均变化百分比 | 预测 |
---|---|---|---|---|
2023 年 4 月 | 空 | 空 | -2.00 | 10.03 |
2023 年 3 月 | 空 | 空 | -1.5 | 12.03 |
2023 年 2 月 | 空 | 空 | 2.00 | 13.53 |
2023 年 1 月 | 空 | 10.3 | 1.23 | 11.53 |
2022 年 12 月 | 10.3 | 11.28 | -3.1 | 10.3 |
2022 年 11 月 | 11.28 | 14.5 | 2.14 | 11.28 |
这是我到目前为止制定的措施:
Forecast =
VAR _CurrentValue = [% Accepted]
VAR _ProjectedValue = [% Accepted Prior Month] + [Avg % Change]
RETURN
IF(ISBLANK(_CurrentValue), _ProjectedValue, _CurrentValue
它给了我这个:
月年 | % 接受 | 上个月接受的百分比 | 平均变化百分比 | 预测 |
---|---|---|---|---|
2023 年 4 月 | 空 | 空 | -2.00 | -2.00 |
2023 年 3 月 | 空 | 空 | -1.5 | -1.5 |
2023 年 2 月 | 空 | 空 | 2.00 | 2.00 |
2023 年 1 月 | 空 | 10.3 | 1.23 | 11.53 |
2022 年 12 月 | 10.3 | 11.28 | -3.1 | 10.3 |
2022 年 11 月 | 11.28 | 14.5 | 2.14 | 11.28 |
我可以预测一个月,但之后它只返回[平均变化百分比],因为它没有将前一个[预测]值视为前一个月的值。
我还尝试创建一个仅 [上个月接受百分比] + [平均变化百分比] 的度量,以及该度量的上个月版本,但我仍然得到相同的结果。
DAX 不是递归的 - 在这种情况下,您需要获取最新的
% Accepted
并添加 Avg % Change
的累积和。
尝试以下操作(对您的日期表做出一些假设):
Forecast =
var thisMonth = MAX('DateTable'[Date])
var maxAvailableDate = MAXX(ALL('DateTable'), IF(NOT ISBLANK([% Accepted]), [Date])
var lastAccepted =
CALCULATE(
[% Accepted],
REMOVEFILTERS('DateTable'),
'DateTable'[Date] = maxAvailableDate
)
var fcstMonths =
FILTER(
ALL('DateTable'),
maxAvailableDate <= 'DateTable'[Date] && 'DateTable'[Date] <= thisMonth
)
var cumulativeChange =
SUMX(
SUMMARIZE(fcstMonths, 'Datetable'[MonthYear], "avg", [Avg % Change]),
[avg]
)
var frcst = lastAccepted + cumulativeChange
var curValue = [% Accepted]
return COALESCE(curValue, frcst)