Find everything you need to get certified on Fabric—skills challenges, live sessions, exam prep, role guidance, and more. Get started
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
Check out the September 2024 Power BI update to learn about new features.
Learn from experts, get hands-on experience, and win awesome prizes.
User | Count |
---|---|
61 | |
40 | |
37 | |
28 | |
16 |