Forum Discussion

Mekist's avatar
Mekist
Helper III
1 year ago
Solved

Sliding Average

Hello

I want to make a sliding average as I gave the example below, I created the ratios with a measure

 

DönemOran %OrtalamaFormül
2025/0311,04%9,06%=ORTALAMA($K5:K$13)
2024/124,30%8,81%=ORTALAMA($K6:K$13)
2024/0919,58%9,45%=ORTALAMA($K7:K$13)
2024/0624,10%7,76%=ORTALAMA($K8:K$13)
2024/0313,08%4,50%=ORTALAMA($K9:K$13)
2023/129,11%2,35%=ORTALAMA($K10:K$13)
2023/0925,37%0,10%=ORTALAMA($K11:K$13)
2023/06-22,78%-12,54%=ORTALAMA($K12:K$13)
2023/03-2,30%-2,30%=ORTALAMA($K13:K$13)
  • Hey Mekist ,

    The goal is to make Sliding Average with DAX (Matching Excel’s =AVERAGE(Kx:K13) Pattern). You are creating a sliding (or rolling) average in DAX where the average should be calculated from the current row down to the last row.

     

    DAX Formula (Sliding Average from Current to Last Row)

    SlidingAverage :=
    VAR CurrentPeriod = 'YourTable'[Dönem]
    RETURN
    AVERAGEX(
        FILTER(
            ALL('YourTable'),
            'YourTable'[Dönem] >= CurrentPeriod
        ),
        'YourTable'[Oran]
    )

     Things to remember:

    • Make sure Dönem is sorted descendingly (newest to oldest), matching how your Excel table flows.

    • If Oran is text (e.g., % formatted string), first convert it to a number in Power BI or Power Query.

    • Use ALL('YourTable') to avoid existing filter context interfering with the sliding window.

     

    If you found this solution helpful, please consider accepting it and giving it a kudos (Like) it’s greatly appreciated and helps others find the solution more easily.


    Best Regards,
    Nasif Azam

3 Replies

  • Hey Mekist ,

    The goal is to make Sliding Average with DAX (Matching Excel’s =AVERAGE(Kx:K13) Pattern). You are creating a sliding (or rolling) average in DAX where the average should be calculated from the current row down to the last row.

     

    DAX Formula (Sliding Average from Current to Last Row)

    SlidingAverage :=
    VAR CurrentPeriod = 'YourTable'[Dönem]
    RETURN
    AVERAGEX(
        FILTER(
            ALL('YourTable'),
            'YourTable'[Dönem] >= CurrentPeriod
        ),
        'YourTable'[Oran]
    )

     Things to remember:

    • Make sure Dönem is sorted descendingly (newest to oldest), matching how your Excel table flows.

    • If Oran is text (e.g., % formatted string), first convert it to a number in Power BI or Power Query.

    • Use ALL('YourTable') to avoid existing filter context interfering with the sliding window.

     

    If you found this solution helpful, please consider accepting it and giving it a kudos (Like) it’s greatly appreciated and helps others find the solution more easily.


    Best Regards,
    Nasif Azam

    • Mekist's avatar
      Mekist
      Helper III

      Hello Nasif_Azam 

      Thank you, my problem has been solved in general Without data in the last two periods, he did not make calculations As in the example, when there is no vieri, it does not calculate in all periods

       

      DönemOran %Ortalama
      2025/0311,04% 
      2024/124,30% 
      2024/0919,58% 
      2024/0624,10% 
      2024/0313,08% 
      2023/129,11% 
      2023/0925,37% 
      2023/06  
      2023/03  
      • Mekist's avatar
        Mekist
        Helper III

        I have excluded those who do not have period data as follows, I wanted to share it in case there is a need

        Satış Büyüme (Kümüle) Ortalama = 
        
        VAR GuncelDonem = MAX('Dönem'[Dönem])
        VAR Donemler = 
            FILTER(
                ALL('Dönem'[Dönem]),
                'Dönem'[Dönem] <= GuncelDonem
            )
        RETURN
        AVERAGEX(
            Donemler,
            CALCULATE([Satış Değişim-Kümüle])
        )