Forum Discussion
Calculate Moving range ( subtract previous row value from earlier row)
- 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
I want to get the moving average of the data below.
| Melt | Serial | Length (mm) | Moving Range |
| 567110 | 5776 | 134.9629 | |
| 567110 | 5777 | 134.9604 | 0.0025 = abs(134.9629-134.9604) |
| 567110 | 5778 | 134.9629 | 0.0025 |
| 567110 | 5779 | 134.9654 | 0.0025 |
| 567110 | 5780 | 134.9604 | 0.0051 |
| 567110 | 5781 | 134.9527 | 0.0076 |
| 567110 | 5782 | 134.9477 | 0.0051 |
| 567110 | 5783 | 134.9400 | 0.0076 |
| 567110 | 5784 | 134.9756 | 0.0356 |
v-frfei-msft had a solution using M code. When I copied the code from here to my file I received an error (most likely from referencing columns that do not exist). I am not sure what part of the code should be changed to make it work.
Hope that is enough information. Let me know if you have any other questions. Thank you!
Hello amlopez45,
I have created a calculated measure using your data.
follow the steps-
1. add an index column
2. create a measure which will refer to the next value of the row.
3. create an Absolute difference between the current value and previous value.
refer attached images.
- Anonymous4 years agoNot applicable
Hi @v-frfei-msft ,
I need the average of the moving ranges. Is it possible to insert more steps in your calculated measure above and calculate the average? Please can you help me?