Starting December 3, join live sessions with database experts and the Microsoft product team to learn just how easy it is to get started
Learn moreGet certified in Microsoft Fabric—for free! For a limited time, get a free DP-600 exam voucher to use by the end of 2024. Register now
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.
Solved! Go to Solution.
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
AddDiffColumns
Best Regards,
Gao
Community Support Team
If 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
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.
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
AddDiffColumns
Best Regards,
Gao
Community Support Team
If 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
Starting December 3, join live sessions with database experts and the Fabric product team to learn just how easy it is to get started.
March 31 - April 2, 2025, in Las Vegas, Nevada. Use code MSCUST for a $150 discount! Early Bird pricing ends December 9th.
User | Count |
---|---|
24 | |
13 | |
12 | |
11 | |
8 |
User | Count |
---|---|
42 | |
25 | |
14 | |
14 | |
12 |