Forum Discussion
Pivoting the table data in Modeling
- 1 year ago
VijayRbn Hi! Here the M code for the advanced editor:
let
// Load the original data
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WsjBS0lEKTk0uyczPA7IclWJ1MASdEILOOYnFxUDaCCJkjE2zMZI6Y6XYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Attrib = _t, Value = _t]),
// Group the data by ID and Attrib to handle multiple rows for the same key
GroupedTable = Table.Group(
Source,
{"ID", "Attrib"},
{{"Values", each Text.Combine([Value], ","), type text}}
),// Pivot the grouped table based on the 'Attrib' column
PivotedTable = Table.Pivot(
GroupedTable,
List.Distinct(GroupedTable[Attrib]), // Pivot by the unique values in 'Attrib' (i.e., 'Section' and 'Class')
"Attrib",
"Values"
),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(PivotedTable, {{"Section", Splitter.SplitTextByDelimiter(",", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Section"),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID", Int64.Type}, {"Section", type text}})
in
#"Changed Type"you'll achieve:
if it's ok, please accept my answer as solution.
BBF
VijayRbn Hi! Here the M code for the advanced editor:
let
// Load the original data
Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WsjBS0lEKTk0uyczPA7IclWJ1MASdEILOOYnFxUDaCCJkjE2zMZI6Y6XYWAA=", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [ID = _t, Attrib = _t, Value = _t]),
// Group the data by ID and Attrib to handle multiple rows for the same key
GroupedTable = Table.Group(
Source,
{"ID", "Attrib"},
{{"Values", each Text.Combine([Value], ","), type text}}
),
// Pivot the grouped table based on the 'Attrib' column
PivotedTable = Table.Pivot(
GroupedTable,
List.Distinct(GroupedTable[Attrib]), // Pivot by the unique values in 'Attrib' (i.e., 'Section' and 'Class')
"Attrib",
"Values"
),
#"Split Column by Delimiter" = Table.ExpandListColumn(Table.TransformColumns(PivotedTable, {{"Section", Splitter.SplitTextByDelimiter(",", QuoteStyle.None), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Section"),
#"Changed Type" = Table.TransformColumnTypes(#"Split Column by Delimiter",{{"ID", Int64.Type}, {"Section", type text}})
in
#"Changed Type"
you'll achieve:
if it's ok, please accept my answer as solution.
BBF
- VijayRbn1 year agoNew Member
That really helped my Puzzle! Thanks a lot. I was unaware of the Group concept, that would help in my learning too.