首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用PowerQuery按特定顺序排序

使用PowerQuery按特定顺序排序
EN

Stack Overflow用户
提问于 2017-01-30 14:12:27
回答 2查看 2K关注 0票数 3

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

中高低

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

高、低介质

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

高中低

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

Table.Sort(#“筛选行”,{“评级”,Order.Ascending})

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-01-30 14:54:05

或者,您可以充分利用comparisonCriteria参数的Table.Sort:

=Table.Sort(#“过滤行”,(x,y) => Value.Compare(List.PositionOf({“低”,“中等”,“高”},xRating),List.PositionOf({“低”,“中等”,“高”},yRating)

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

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

代码语言:javascript
复制
= Table.Sort(#"Filtered Rows", (x,y) => -1 * Value.Compare(List.PositionOf({"Low","Medium","High"},x[Rating]),List.PositionOf({"Low","Medium","High"},y[Rating])))
票数 5
EN

Stack Overflow用户

发布于 2017-01-30 14:40:38

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

代码语言:javascript
复制
= Table.AddColumn(#"Changed Type", "Order", each if [Rating] = "High" then "1" else if [Rating] = "Medium" then "2" else "3" )

然后,只需对升序的Order列进行排序。

如果这有帮助的话请告诉我。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41937993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档