使用 Power Query 按特定顺序排序

Sorting in a specfic Order using PowerQuery

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

中等 高的 低

如果我按升序排序,则数据按字母顺序排序:

高 低的 中

在高级编辑器中,如何更改 PowerQuery 中的代码,使其排序如下:

高 中等的 低

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

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

您可以使用以下表达式将新的 Order 列添加到 table:

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

那么您只需要对 Order 列进行升序排序。

如果有帮助请告诉我。

或者,您可以充分利用 Table.Sort:

的 comparisonCriteria 参数

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

编辑:这类似于 Order.Ascending(低、中、高),但是 - 再次阅读您的问题 - 我看到您正在寻找高、中、低:所以您可以在代码中切换 "Low" 和 "High" (2x).

Edit2:另一个很酷的技巧是保留原始序列并将 Value.Compare 的结果乘以 -1 以反转排序顺序:

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