Forum Discussion
Sort Order issue
- 8 months ago
Hi JediMole I have created a Power Query logic that automatically assigns a new Sort Order value to manually entered answers. This prevents errors when sorting by other columns and ensures consistent ranking. Attached the file and power query for your reference.
let Source = Csv.Document(File.Contents("C:\Users\jaike\Downloads\rank.csv"), [Delimiter=",", Columns=3, Encoding=1252]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Sort Order", Int64.Type}}), MaxRank = try List.Max(List.RemoveNulls(#"Changed Type"[Sort Order])) otherwise 0, NullAnswerKeys = Table.Distinct(Table.SelectColumns(Table.SelectRows(#"Changed Type", each [Sort Order] = null), {"Answer"})), RankedNullKeys = Table.AddIndexColumn(NullAnswerKeys, "NewRank", MaxRank + 1, 1), Joined = Table.NestedJoin(#"Changed Type", "Answer", RankedNullKeys, "Answer", "New", JoinKind.LeftOuter), Expanded = Table.ExpandTableColumn(Joined, "New", {"NewRank"}, {"NewRank"}), Final = Table.AddColumn(Expanded, "New Sort Order", each if [Sort Order] = null then [NewRank] else [Sort Order], Int64.Type), Output = Table.RemoveColumns(Final, {"NewRank","Sort Order"}), #"Sorted Rows" = Table.Sort(Output,{{"New Sort Order", Order.Ascending}}) in #"Sorted Rows"
Thanks,
Jai
JediMole Could you replace all null values with a random number that is 12 or greater? You could make the range large enough that you would likely not get duplicates. Another thought, do you really need the Additional Comments for what you are doing? You could simply get rid of those if they are not really that important or move those to another, linked table.
I could replace the Nulls, I did replace them with just a 0 (zero) but I didnt try all unique numbers. I do need the additional as I have another drill thru visual the team uses
- Jai-Rathinavel8 months agoSuper User
Hi JediMole I have created a Power Query logic that automatically assigns a new Sort Order value to manually entered answers. This prevents errors when sorting by other columns and ensures consistent ranking. Attached the file and power query for your reference.
let Source = Csv.Document(File.Contents("C:\Users\jaike\Downloads\rank.csv"), [Delimiter=",", Columns=3, Encoding=1252]), #"Promoted Headers" = Table.PromoteHeaders(Source, [PromoteAllScalars=true]), #"Changed Type" = Table.TransformColumnTypes(#"Promoted Headers",{{"Sort Order", Int64.Type}}), MaxRank = try List.Max(List.RemoveNulls(#"Changed Type"[Sort Order])) otherwise 0, NullAnswerKeys = Table.Distinct(Table.SelectColumns(Table.SelectRows(#"Changed Type", each [Sort Order] = null), {"Answer"})), RankedNullKeys = Table.AddIndexColumn(NullAnswerKeys, "NewRank", MaxRank + 1, 1), Joined = Table.NestedJoin(#"Changed Type", "Answer", RankedNullKeys, "Answer", "New", JoinKind.LeftOuter), Expanded = Table.ExpandTableColumn(Joined, "New", {"NewRank"}, {"NewRank"}), Final = Table.AddColumn(Expanded, "New Sort Order", each if [Sort Order] = null then [NewRank] else [Sort Order], Int64.Type), Output = Table.RemoveColumns(Final, {"NewRank","Sort Order"}), #"Sorted Rows" = Table.Sort(Output,{{"New Sort Order", Order.Ascending}}) in #"Sorted Rows"
Thanks,
Jai