Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowJuly 7 - July 17 | Round 2 of the Power BI Dataviz World Championships. Don't miss your chance! Learn more
Hi ,
I need help achieve this expected output where the resultant is a transposed data. Row scrore is transposed into a column but instead of manually renaming as Country1_Score is there an automated way and automatically create the sheet name as another column
Solved! Go to Solution.
Hi @han_rj, check this:
Output
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8swrKC1R0lFCoFidaCjTOb80r6SoUsEQVSY4tbg4Mz/PEME0QjCNEUwTsIbg5PyiVKCgoQGQMAURRmAWWNI3NSUxByQExMZgUaBCJBfgdJIRNZxkCrXZDKt7DKBuAronFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t]),
// You can probably delete this step.
ReplacedBlankWithNull = Table.TransformColumns(Source,{}, each if _ = "" then null else _),
FilteredRows = Table.SelectRows(ReplacedBlankWithNull, each not List.IsEmpty(List.RemoveNulls(Record.ToList(_)))),
FnCheckCountry = each List.Contains(Record.ToList(_), "Country", (x,y)=> Text.StartsWith(x ?? "", y)),
RemovedTopRows = Table.Skip(FilteredRows, each not FnCheckCountry(_)),
Ad_GroupHelper = Table.AddColumn(RemovedTopRows, "GroupHelper", each FnCheckCountry(_), type logical),
GroupedRows = Table.Group(Ad_GroupHelper, "GroupHelper", {{"T", each
[ a = Table.RemoveColumns(_, {"GroupHelper"}),
b = Table.PromoteHeaders(Table.FromRows(Table.ToColumns(Table.Skip(a)))),
c = List.Transform(Table.ColumnNames(b), (x)=> Text.Combine({List.RemoveNulls(Record.ToList(a{0})){0}, x}, "_")),
d = Table.RenameColumns(b, List.Zip({ Table.ColumnNames(b), c }))
][d], type table}}, 0,
(x,y)=> Byte.From(y = true) ),
T = GroupedRows[T],
Combined = Table.FromColumns(List.Combine(List.Transform(T, Table.ToColumns)), List.Combine(List.Transform(T, Table.ColumnNames)) ),
RenamedColumns = Table.RenameColumns(Combined,{{Table.ColumnNames(Combined){0}, "Type"}}),
RemovedOtherColumns = Table.SelectColumns(RenamedColumns, List.Select(Table.ColumnNames(RenamedColumns), (x)=> not Text.EndsWith(x, "Column1")))
in
RemovedOtherColumns
Hi @han_rj, check this:
Output
let
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45W8swrKC1R0lFCoFidaCjTOb80r6SoUsEQVSY4tbg4Mz/PEME0QjCNEUwTsIbg5PyiVKCgoQGQMAURRmAWWNI3NSUxByQExMZgUaBCJBfgdJIRNZxkCrXZDKt7DKBuAronFgA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [Column1 = _t, Column2 = _t, Column3 = _t, Column4 = _t, Column5 = _t]),
// You can probably delete this step.
ReplacedBlankWithNull = Table.TransformColumns(Source,{}, each if _ = "" then null else _),
FilteredRows = Table.SelectRows(ReplacedBlankWithNull, each not List.IsEmpty(List.RemoveNulls(Record.ToList(_)))),
FnCheckCountry = each List.Contains(Record.ToList(_), "Country", (x,y)=> Text.StartsWith(x ?? "", y)),
RemovedTopRows = Table.Skip(FilteredRows, each not FnCheckCountry(_)),
Ad_GroupHelper = Table.AddColumn(RemovedTopRows, "GroupHelper", each FnCheckCountry(_), type logical),
GroupedRows = Table.Group(Ad_GroupHelper, "GroupHelper", {{"T", each
[ a = Table.RemoveColumns(_, {"GroupHelper"}),
b = Table.PromoteHeaders(Table.FromRows(Table.ToColumns(Table.Skip(a)))),
c = List.Transform(Table.ColumnNames(b), (x)=> Text.Combine({List.RemoveNulls(Record.ToList(a{0})){0}, x}, "_")),
d = Table.RenameColumns(b, List.Zip({ Table.ColumnNames(b), c }))
][d], type table}}, 0,
(x,y)=> Byte.From(y = true) ),
T = GroupedRows[T],
Combined = Table.FromColumns(List.Combine(List.Transform(T, Table.ToColumns)), List.Combine(List.Transform(T, Table.ColumnNames)) ),
RenamedColumns = Table.RenameColumns(Combined,{{Table.ColumnNames(Combined){0}, "Type"}}),
RemovedOtherColumns = Table.SelectColumns(RenamedColumns, List.Select(Table.ColumnNames(RenamedColumns), (x)=> not Text.EndsWith(x, "Column1")))
in
RemovedOtherColumns
The steps to get to your output will be a bit involved. Hope you can follow my descripiton here:
Start by adding a calculated column (let's call this Column 6) and setting it to Column 3 IF the contents of Column 1, 2, 4 or 5 are NULL.
Do a Fill Down to propagate that value to the rows below.
Assign column names manually: "Type", Session1, 2, 3, 4, and Country
Filter out where the first column (Type, or whatevery you name it) is null. You should now have a dataset of four rows and 6 columns.
Now experiment with various PIVOT and UNPIVOT operations.
Hope that helps
Proud to be a Super User! | |
Join us in Barcelona for FabCon and SQLCon, the Fabric, Power BI, SQL, and AI community event. Save €200 with code FABCMTY200.
Join Data Days 2026: 60 days of free live/on-demand sessions, challenges, study groups, and certification opportunities.