Power Query:按自定义列表排序

8

我有一个关于学年时间段的列表:

"Fall 12-13",
"Winter 12-13",
"Spring 12-13",
"Fall 13-14",
etc.

我希望能够根据这些值对大量的行进行时间顺序排序。在Excel中,可以通过自定义列表进行排序,只需要输入我想要按照顺序排序的项目即可。
我需要在Power Query中实现相同的功能,但我还没有找到如何做到这一点。我只能将排序顺序设置为 Order.Ascending 或者 Order.Descending
在Power Query中有没有很好的方法来实现按自定义列表排序?
3个回答

12

Table.Sort的第二个参数也可以是一个函数:它可以是接受两行数据并返回它们之间排序(类似于strcmp)的函数,或者是接受一行数据并返回应用于比较的值的函数。因此,对于您描述的值进行排序的一种方式是:

= Table.Sort(Table, each List.PositionOf({"Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14"}, [Column]))

很棒的解决方案。但是如果您想按多列排序,其中一列(或多列)可能是自定义排序,而另一列(或多列)则是升序或降序排序呢? - Ron Rosenfeld

7

我没有足够的声望来直接回答Ron Rosenfeld的问题,但是这里是答案:

你也可以将第二个参数实现为函数列表。列将按照在列表中提供它们的顺序进行排序。例如,在下面的示例中,Column、Column1、Column2。

= Table.Sort(Table,{ each List.PositionOf({"Fall 12-13", "Winter 12-13", "Spring 12-13", "Fall 13-14"}, [Column]), {"Column1",Order.Ascending}, {"Column2",Order.Ascending}})

3

创建一个带有两个字段的单独表:Season和SortOrder。 Season是文本,SortOrder是表示顺序的整数。然后在Season上将现有的表与此表连接,包括SortOrder列,并按其排序。


啊哈!这是一个很棒的解决方案!谢谢! - zacksg1

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接