Forum Discussion
insert multiple columns that subtract previous columns
Hello - I have 50+ columns that I need to calculate the difference after every 2 columns. Currently I appended my tables in Power Query and it looks like this:
| DRAFT | ACTUAL | DRAFT | ACTUAL |
| 10 | 15 | 20 | 10 |
| 5 | 4 | 30 | 100 |
| 1 | 2 | 40 | 50 |
I need it to do this:
| DRAFT | ACTUAL | DIFF | DRAFT | ACTUAL | DIFF |
| 10 | 15 | (5) | 20 | 10 | 10 |
| 5 | 4 | 1 | 30 | 100 | (70) |
| 1 | 2 | (1) | 40 | 50 | (10) |
I can add a custom column in Power query but it shows up at the end of the table and then I have to move it. Also, it is very manual and I have to do this for 50+ columns on 50+ files.
- Anonymous2 years ago
Hi ,
Please refer to this:let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("JYqxDQAwCMN+ydyhQOkziP/fKEkXK5FdBdtYsBy4lmCDCPQq0Bzeb8lU7dIsnYkEcVjfi+4H", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [DRAFT = _t, ACTUAL = _t, DRAFT.1 = _t, ACTUAL.1 = _t, DRAFT.2 = _t, ACTUAL.2 = _t]), ColumnNames = Table.ColumnNames(Source), ChangeType = Table.TransformColumnTypes(Source, List.Transform(ColumnNames, each {_, type number})), AddDiffColumns = List.Accumulate( List.Zip({{0..List.Count(ColumnNames)-1}, ColumnNames}), ChangeType, (state, current) => if Number.Mod(current{0}, 2) = 1 then let diffColumnName = "DIFF" & Text.From(Number.IntegerDivide(current{0}, 2) + 1), draftColumnName = ColumnNames{current{0}-1}, actualColumnName = current{1}, addedDiffColumn = Table.AddColumn(state, diffColumnName, each Record.Field(_, draftColumnName) - Record.Field(_, actualColumnName), type number) in addedDiffColumn else state ) in AddDiffColumnsBest Regards,
Gao
Community Support TeamIf there is any post helps, then please consider Accept it as the solution to help the other members find it more quickly.
If I misunderstand your needs or you still have problems on it, please feel free to let us know. Thanks a lot!How to get your questions answered quickly -- How to provide sample data in the Power BI Forum
2 Replies
- Syndicate_AdminAdministrator
I should add that each of my files has a different number of columns as well. So if I can automate to add this difference column for any number of iterations as there is data, that is what I want to do.
- AnonymousNot applicable
Hi ,
Please refer to this:let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("JYqxDQAwCMN+ydyhQOkziP/fKEkXK5FdBdtYsBy4lmCDCPQq0Bzeb8lU7dIsnYkEcVjfi+4H", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [DRAFT = _t, ACTUAL = _t, DRAFT.1 = _t, ACTUAL.1 = _t, DRAFT.2 = _t, ACTUAL.2 = _t]), ColumnNames = Table.ColumnNames(Source), ChangeType = Table.TransformColumnTypes(Source, List.Transform(ColumnNames, each {_, type number})), AddDiffColumns = List.Accumulate( List.Zip({{0..List.Count(ColumnNames)-1}, ColumnNames}), ChangeType, (state, current) => if Number.Mod(current{0}, 2) = 1 then let diffColumnName = "DIFF" & Text.From(Number.IntegerDivide(current{0}, 2) + 1), draftColumnName = ColumnNames{current{0}-1}, actualColumnName = current{1}, addedDiffColumn = Table.AddColumn(state, diffColumnName, each Record.Field(_, draftColumnName) - Record.Field(_, actualColumnName), type number) in addedDiffColumn else state ) in AddDiffColumnsBest Regards,
Gao
Community Support TeamIf there is any post helps, then please consider Accept it as the solution to help the other members find it more quickly.
If I misunderstand your needs or you still have problems on it, please feel free to let us know. Thanks a lot!How to get your questions answered quickly -- How to provide sample data in the Power BI Forum