【问题标题】:Power Query: sort by custom listPower Query:按自定义列表排序
【发布时间】:2014-12-09 10:59:47
【问题描述】:

我有一个学年内的季节列表:

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

我想根据这些值按时间顺序对大量行进行排序。在 Excel 中,可以按自定义列表进行排序,我只需输入我希望对项目进行排序的顺序。

我在 Power Query 中需要相同的功能,但我还没有弄清楚如何做到这一点。我只能将排序顺序设置为Order.AscendingOrder.Descending

有没有在 Power Query 中实现 sort-by-custom-list 的好方法?

【问题讨论】:

    标签: excel sorting powerquery


    【解决方案1】:

    Table.Sort 的第二个参数也可以是一个函数:要么是一个接受两行并返回它们之间的排序的函数(a la strcmp),要么是一个接受单行并返回应该使用的值的函数进行比较。因此,对您描述的值进行排序的一种方法是说

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

    【讨论】:

    • 很好的解决方案。但是如果你想对多列进行排序呢?其中一个(或多个)可能是自定义排序,而一个(或多个)可能是升序或降序?
    【解决方案2】:

    我没有足够的声望直接解决 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 将是一个指示顺序的整数。然后将您现有的表加入到这个季节,包括 SortOrder 列,并对其进行排序。

      【讨论】:

      • 啊哈!这是一个很好的解决方案!谢谢!
      猜你喜欢
      • 2022-01-23
      • 2021-10-26
      • 1970-01-01
      • 1970-01-01
      • 2021-04-02
      • 2017-07-30
      • 2019-01-16
      • 2022-01-24
      • 2018-01-25
      相关资源
      最近更新 更多