使用 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])))
我有一个包含 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])))