如何在第一个位置对具有特定值的逗号分隔字符串进行排序?

时间:2018-02-13 08:59:08

标签: sorting powerquery m

让我说我的查询中有一个未分类的字符串,如“苹果,香蕉,菠萝,杏子”。我想对该列表进行排序,特别是在列表中首先出现“Bananas”,如果它们出现,其余的则按升序排序。

示例:

[BASKET] | [CONTENT]                  | [SORTED]
John     | Apples,Apricots,Bananas    | Bananas,Apples,Apricots
Melissa  | Pineapples,Bananas         | Bananas,Pineapples
Tom      | Pineapples,Apricots,Apples | Apples,Apricots,Pineapples

如何使用Power Query完成此操作?

1 个答案:

答案 0 :(得分:1)

廉价版本(a)用严格的alpha排序排序的东西取代香蕉(b)新列中的排序(c)修复香蕉(d)删除额外的列

let Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
#"Replaced Value" = Table.ReplaceValue(Source,"Bananas","111Bananas",Replacer.ReplaceText,{"Items"}),
MySort = (x) => Text.Combine(List.Sort(Text.Split(x, ",")), ","),
Sorted = Table.AddColumn(#"Replaced Value", "Sorted", each MySort([Items])),
#"Replaced Value1" = Table.ReplaceValue(Sorted,"111Bananas","Bananas",Replacer.ReplaceText,{"Sorted"}),
#"Removed Columns" = Table.RemoveColumns(#"Replaced Value1",{"Items"})
in #"Removed Columns"