使用PowerQuery按照特定顺序进行sorting

我有一个包含5个字段的表格,其中包含以下内容:

中等偏低

如果按升序sorting数据按字母顺序sorting:

高低中

在高级编辑器中,如何更改PowerQuery中的代码,使其类似于以下内容:

高中低

我在编辑器中的当前语法是这样的:

Table.Sort(#“Filtered Rows”,{{“Rating”,Order.Ascending}})

或者,您可以使用Table.Sort的compareCriteria参数的完整强度:

= Table.Sort(#“Filtered Rows”,(x,y)=> Value.Compare(List.PositionOf({“Low”,“Medium”,“High”},x [Rating]),List.PositionOf { “低”, “中”, “高”},Y [评价])))

编辑:这就像Order.Ascending(低,中,高),但 – 再次读你的问题 – 我看到你正在寻找高,中,低:所以你可以在代码中切换“低”和“高” 2倍)。

编辑2:另一个很酷的技巧是离开原始序列,并乘以Value.Compare的结果-1以反转sorting顺序:

= Table.Sort(#"Filtered Rows", (x,y) => -1 * Value.Compare(List.PositionOf({"Low","Medium","High"},x[Rating]),List.PositionOf({"Low","Medium","High"},y[Rating]))) 

您可以使用以下expression式将新的“ Order列添加到表中:

 = Table.AddColumn(#"Changed Type", "Order", each if [Rating] = "High" then "1" else if [Rating] = "Medium" then "2" else "3" ) 

然后你只需要升序Order列。

让我知道这是否有帮助。