Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hello
I want to make a sliding average as I gave the example below, I created the ratios with a measure
| Dönem | Oran % | Ortalama | Formül |
| 2025/03 | 11,04% | 9,06% | =ORTALAMA($K5:K$13) |
| 2024/12 | 4,30% | 8,81% | =ORTALAMA($K6:K$13) |
| 2024/09 | 19,58% | 9,45% | =ORTALAMA($K7:K$13) |
| 2024/06 | 24,10% | 7,76% | =ORTALAMA($K8:K$13) |
| 2024/03 | 13,08% | 4,50% | =ORTALAMA($K9:K$13) |
| 2023/12 | 9,11% | 2,35% | =ORTALAMA($K10:K$13) |
| 2023/09 | 25,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) |
Solved! Go to Solution.
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.
SlidingAverage :=
VAR CurrentPeriod = 'YourTable'[Dönem]
RETURN
AVERAGEX(
FILTER(
ALL('YourTable'),
'YourTable'[Dönem] >= CurrentPeriod
),
'YourTable'[Oran]
)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
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.
SlidingAverage :=
VAR CurrentPeriod = 'YourTable'[Dönem]
RETURN
AVERAGEX(
FILTER(
ALL('YourTable'),
'YourTable'[Dönem] >= CurrentPeriod
),
'YourTable'[Oran]
)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
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önem | Oran % | Ortalama |
| 2025/03 | 11,04% | |
| 2024/12 | 4,30% | |
| 2024/09 | 19,58% | |
| 2024/06 | 24,10% | |
| 2024/03 | 13,08% | |
| 2023/12 | 9,11% | |
| 2023/09 | 25,37% | |
| 2023/06 | ||
| 2023/03 |
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])
)
The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now!
| User | Count |
|---|---|
| 144 | |
| 123 | |
| 103 | |
| 79 | |
| 54 |