DAX累计和,按x周期重置

时间:2018-08-22 14:55:17

标签: powerbi dax

我有一个求和的函数,如下:

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个时期组成,几乎还包括您可以想到的每个度量标准,月,月年,月周期等。任何帮助将不胜感激。最终目标是在一定时期内的移动平均值。

谢谢

1 个答案:

答案 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))