我有一个求和的函数,如下:
Actions closed cumulative =
IF(MAX(Dates[Date])<CALCULATE(MIN(Dates[Date]),
FILTER(all(Dates),Dates[PeriodFiscalYear]=[CurrentPeriod1])),
CALCULATE(Actions[Actions closed on time],
FILTER(ALL(Dates),
Dates[Date]<=max(Dates[Date])
)
))
CurrentPeriod1是我们所在的时间段,它返回如下内容:
PeriodFiscalYear | Actions | Actions Closed Cumulative
P01-2018/19 | 4 | 608
P02-2018/19 | 19 | 627
P03-2018/19 | 17 | 644
P04-2018/19 | 6 | 650
P05-2018/19 | 7 | 657
因此,它基本上是在计算当前表中所有已关闭的动作,但是我想在一定数量的时间段内进行重置,例如3个时间段将是:
PeriodFiscalYear | Actions | Actions Closed Cumulative
P12-2017/18 | 10 |
P13-2017/18 | 10 |
P01-2018/19 | 4 | 24
P02-2018/19 | 19 | 33
P03-2018/19 | 17 | 40
P04-2018/19 | 6 | 42
P05-2018/19 | 7 | 30
尽管有很多阅读,但我仍在努力了解如何做。我有一个日历表,其中的日期由每年13个时期组成,几乎还包括您可以想到的每个度量标准,月,月年,月周期等。任何帮助将不胜感激。最终目标是在一定时期内的移动平均值。
谢谢
答案 0 :(得分:1)
假设您的Actions
表使用日期值并将期间存储在Dates
表中,建议您首先为这些期间创建一个索引列,以使其更易于使用:>
PeriodIndex = 100 * VALUE(MID(Dates[PeriodFiscalYear], 5, 4)) +
VALUE(MID(Dates[PeriodFiscalYear], 2, 2))
例如,这些索引值应该是看起来像201804
而不是P04-2018/19
的整数。
现在您可以使用索引列了,您可以像这样写滚动累积和:
Trailing3Periods =
VAR CurrentPeriod = MAX(Dates[PeriodIndex])
RETURN CALCULATE(SUM(Actions[Actions closed on time]),
FILTER(ALL(Dates),
Dates[PeriodIndex] <= CurrentPeriod &&
Dates[PeriodIndex] > CurrentPeriod - 3))