Forum Discussion
Sorting Version Number with multiple decimal points formatted as text
- 8 years ago
Hi pchilton,
Do the following steps on advance query editor:
- Add a custom column based on Version number
- Split the new column by Delimiter "."
- Add a new custom column with the following code:
Text.PadStart ([Valid.1], 2, "0") & "." & Text.PadStart ([Valid.2], 2, "0") & "." & Text.PadStart ([Valid.3], 2, "0") & "." & Text.PadStart ([Valid.4], 2, "0")
- Sort by new column
- Delete Columns created with split delimiter
See below the M Code for a Query editor so you can replicate and look at what I did.
let Source = Table.FromRows(Json.Document(Binary.Decompress(Binary.FromText("i45WMtIz0DM00DNQitWBcIz1DA2ROEZGcI4JkioTPWM42xIkHgsA", BinaryEncoding.Base64), Compression.Deflate)), let _t = ((type text) meta [Serialized.Text = true]) in type table [Version = _t]), #"Changed Type" = Table.TransformColumnTypes(Source,{{"Version", type text}}), #"Added Custom" = Table.AddColumn(#"Changed Type", "Valid", each [Version]), #"Split Column by Delimiter" = Table.SplitColumn(#"Added Custom", "Valid", Splitter.SplitTextByDelimiter(".", QuoteStyle.Csv), {"Valid.1", "Valid.2", "Valid.3", "Valid.4"}), #"Added Custom1" = Table.AddColumn(#"Split Column by Delimiter", "Sort_Version", each Text.PadStart ([Valid.1], 2, "0") & "." & Text.PadStart ([Valid.2], 2, "0") & "." & Text.PadStart ([Valid.3], 2, "0") & "." & Text.PadStart ([Valid.4], 2, "0")), #"Removed Columns" = Table.RemoveColumns(#"Added Custom1",{"Valid.1", "Valid.2", "Valid.3", "Valid.4"}), #"Sorted Rows" = Table.Sort(#"Removed Columns",{{"Sort_Version", Order.Ascending}}) in #"Sorted Rows"I assumed that you only go to 2 numbers in each part of the Version that why the Padding of the text for all columns is 2.
Regards,
MFelix
Hi,
I have a Rule_Name column which is a text field that I want to have it sorted based on 2.1...,2.2...,2.3....,18.1...,19.1....
For it first I tried to do text before delimiter to remove these number from the Rule_Name column into a new column. However, this "Text Before Delimiter" column is also a text column and I am not able to sort in correct. Could you please assist me with this?
Thanks,
Umar
Hi umarfarooq4
Try to add the following custom colum:
Text.PadStart(Text.BeforeDelimiter([Rule_Name], ".", 0), 3, "0")
& "."
& Text.PadStart(
Text.BeforeDelimiter(Text.AfterDelimiter([Rule_Name], ".", 0), ".", 0),
3,
"0"
)
& "."
& Text.PadStart(
Text.BeforeDelimiter(
Text.BeforeDelimiter(Text.AfterDelimiter([Rule_Name], ".", 1), ".", 1),
".",
0
),
3,
"0"
)
& "."
& Text.PadStart(Text.AfterDelimiter( Text.BeforeDelimiter( [Rule_Name] , " ") , ".", 2), 3, "0")
Result below: