Forum Discussion
Anonymous
7 years agoNot applicable
Calculate Moving range ( subtract previous row value from earlier row)
Hello Experts, I am working to create a mvoing range chart which will show the diffrence between results of current row and previous row. The result i want is moving range column- key ...
- 7 years ago
Hi Anonymous ,
1. Insert an index column in power query as below.
M code as below.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WKjYwKDXIzDMyyErMU9JRMjZVitVBiBpCRE0MUESNoKJGSrGxAA==", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [key = _t, result = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"key", type text}, {"result", Int64.Type}}), #"Added Index" = Table.AddIndexColumn(#"Changed Type", "Index", 1, 1) in #"Added Index"2. Create the measure to get the exceoted result.
Measure = var change = CALCULATE(SUM(Table1[result]),FILTER(ALL(Table1),Table1[Index]=MAX(Table1[Index])-1)) return IF(ISBLANK(change),BLANK(),MAX(Table1[result])-change)
Pbix as attached.
Regards,
Frank
Ashish_Mathur
Super User
7 years agoHi,
This calculated column formula works
=if(ISBLANK(CALCULATE(MAX(Table1[Length (mm)]),FILTER(Table1,Table1[Melt]=EARLIER(Table1[Melt])&&Table1[Serial]=EARLIER(Table1[Serial])-1))),BLANK(),ABS(Table1[Length (mm)]-CALCULATE(MAX(Table1[Length (mm)]),FILTER(Table1,Table1[Melt]=EARLIER(Table1[Melt])&&Table1[Serial]=EARLIER(Table1[Serial])-1))))
Hope this helps.
amlopez45
7 years agoFrequent Visitor
Thank you! That did the trick.
If I wanted to get the moving average by Year could I use the same calculated column formula you provided?
| Shipdate | Melt | Serial | Length (mm) | Moving Range |
| 12/01/2018 | 567110 | 5776 | 134.9629 | |
| 12/01/2018 | 567110 | 5777 | 134.9604 | 0.0025 = abs(134.9629-134.9604) |
| 12/01/2018 | 567110 | 5778 | 134.9629 | 0.0025 |
| 12/01/2018 | 567110 | 5779 | 134.9654 | 0.0025 |
| 12/01/2018 | 567110 | 5780 | 134.9604 | 0.0051 |
| 01/15/2019 | 567110 | 5781 | 134.9527 | 0.0076 |
| 01/15/2019 | 567110 | 5782 | 134.9477 | 0.0051 |
| 01/15/2019 | 567110 | 5783 | 134.9400 | 0.0076 |
| 01/15/2019 | 567110 | 5784 | 134.9756 | 0.0356 |
- Ashish_Mathur7 years ago
Super User
Hi,
If my previous reply helped, please Accept it as solution. I do not understand your next question. Show the expected result.
- amlopez457 years agoFrequent Visitor
I will mark your response as solution. Thank you again for helping me out.
Please disregard my last question. I was able to figure it out.
- Ashish_Mathur7 years ago
Super User
You are welcome.