Forum Discussion
Combing data from rows into columns
- 5 years ago
Hello scott_Abaana
in this case you can add a new column to unite both name-column in a record. Then use Table.Pivot that handles with List.Accumulate the different aggregated records.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMlTSUfJLzE0F0ZGpxSCeo6+BgaFSrA5C0ghE58PkjFDkjFE1GoMljaCSJigaTVDkTFHkTFHkzFANNVOKjQUA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type nullable text) meta [Serialized.Text = true]) in type table [KEY = _t, Name = _t, Valid = _t, NameCode = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"KEY", Int64.Type}, {"Name", type text}, {"Valid", type text}}), #"Added Custom1" = Table.AddColumn(#"Changed Type", "Names", each [Name = [Name], NameCode=[NameCode]]), #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Name", "NameCode"}), #"Pivoted Column" = Table.Pivot(#"Removed Columns", List.Distinct(#"Removed Columns"[Valid]), "Valid", "Names", each List.Accumulate(_, [], (o,r)=> if Record.FieldCount(o)>0 then [Name= o[Name]& ", " & r[Name], NameCode = o[NameCode]& ", " & r[NameCode]] else r )), #"Expanded Yes" = Table.ExpandRecordColumn(#"Pivoted Column", "Yes", {"Name", "NameCode"}, {"Yes.Name", "Yes.NameCode"}), #"Expanded No" = Table.ExpandRecordColumn(#"Expanded Yes", "No", {"Name", "NameCode"}, {"No.Name", "No.NameCode"}) in #"Expanded No"Copy paste this code to the advanced editor in a new blank query to see how the solution works.
If this post helps or solves your problem, please mark it as solution (to help other users find useful content and to acknowledge the work of users that helped you)
Kudoes are nice too
Have fun
Jimmy
- scott_Abaana5 years agoHelper I
Jimmy i worked perfectly for the Small table. Just trying to fit it in with my real life Data.
My challenge (I think) is that it assumes that "Valid" and "Name" are the only unique columns.
But in my data sheet I have around 40 columns, some of which 35 are related to the KEY column so are the same for every KEY, but around 5 columns are related to the Names (used earlier to do calculations).
I do only need to Keep the names so trying to figure out what what best to make it work.
I think possible removing these before applying the Pivot.
But this code is much easier to understand than the first code. 🙂
- Jimmy8015 years agoCommunity Champion
Hello scott_Abaana
then I would really appreciate if you would mark the post as solution.
If you have any question about applying the code to your data, feel free to ask
Jimmy
- scott_Abaana5 years agoHelper I
In terms of the thread being helpful for others I will mark the Above solution. It was perfect.
I got to where I thought I needed to get to, but there was not glitch that my colleague didn't tell me about.
There is a secondary Unique Code that goes with every Name which also needs to be reported.
Hoping it is as simple as this:
#"Pivoted Column" = Table.Pivot(#"Changed Type", List.Distinct(#"Changed Type"[Valid]), "Valid", "Name", "Name code", each Text.Combine(_, ", "))