使用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
列。
让我知道这是否有帮助。