The ultimate Microsoft Fabric, Power BI, Azure AI, and SQL learning event: Join us in Stockholm, September 24-27, 2024.
Save €200 with code MSCUST on top of early bird pricing!
Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
Hi there,
I have the following table:
Date | Value |
2022/Jan | 1 |
2022/Feb | 2 |
2022/Mar | 3 |
2022/Apr | 5 |
2022/May | 2 |
2022/Jun | 6 |
2022/Jul | 1 |
2022/Aug | 23 |
2022/Sep | 5 |
2022/Oct | 6 |
2022/Nov | 8 |
2022/Dec | 2 |
2023/Jan | 3 |
2023/Feb | 5 |
2023/Mar | 1 |
I now want to predict the value for the months coming affter March. That is predict the value for april, may, june to december. And I need to do this using the average of the previous months.
So in Excel, if I want to find 2023/Apr = Average(B15:B17)
Now for the subsequent months, I just drag the edge of the box all the way down and it does the average for me.
So average for 2023/May = AVERAGE(B16:B18) (Note: it includes B18 that was previously calculated)
I am trying to find a way to do that in DAX or Power Query inside Power BI but I can't seem to find a way.
Any ideas?
Thanks
Solved! Go to Solution.
Hard to implement logic of such recursive calculation by DAX; but lightweight for PQ.
let
n = 9,
Source = {3,5,1},
#"Rolling Avg" = List.Accumulate({4..n+3}, Source, (s,c) => s & {List.Average(List.LastN(s, 3))}),
ToTable = Table.FromColumns({List.Transform({1..n+3}, each Date.ToText(Date.AddMonths(#date(2023,1,1),_-1), "yyyy MMM")), #"Rolling Avg"}, {"Yr Mth", "Value"})
in
ToTable
Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
Hard to implement logic of such recursive calculation by DAX; but lightweight for PQ.
let
n = 9,
Source = {3,5,1},
#"Rolling Avg" = List.Accumulate({4..n+3}, Source, (s,c) => s & {List.Average(List.LastN(s, 3))}),
ToTable = Table.FromColumns({List.Transform({1..n+3}, each Date.ToText(Date.AddMonths(#date(2023,1,1),_-1), "yyyy MMM")), #"Rolling Avg"}, {"Yr Mth", "Value"})
in
ToTable
Thanks to the great efforts by MS engineers to simplify syntax of DAX! Most beginners are SUCCESSFULLY MISLED to think that they could easily master DAX; but it turns out that the intricacy of the most frequently used RANKX() is still way beyond their comprehension! |
DAX is simple, but NOT EASY! |
Hi,
One of ways to achieve this is,
1. create a function in Power Query Editor like below.
2. and then follow the advanced editor like below.
Please check the attached pbix file.
Thank you.
If this post helps, then please consider accepting it as the solution to help other members find it faster, and give a big thumbs up.
Join the community in Stockholm for expert Microsoft Fabric learning including a very exciting keynote from Arun Ulag, Corporate Vice President, Azure Data.
Check out the August 2024 Power BI update to learn about new features.
User | Count |
---|---|
109 | |
79 | |
72 | |
48 | |
39 |
User | Count |
---|---|
138 | |
108 | |
69 | |
64 | |
56 |