首页 > 解决方案 > 使用另一个查询将查询值优先于其他查询值以获取优先级

问题描述

我在权力查询中有以下奥运国家查询,我希望使用另一个包含“优先国家”(当前前 10 名)的查询对其进行排序。我希望对原始查询进行排序,以便如果一个国家/地区在优先列表中,它会按字母顺序排列在查询的顶部。

下面直观地显示了我想要实现的目标:

在此处输入图像描述

我能做的最好的事情是合并查询,但这会删除不在优先查询中的国家。我很感激我可以创建原始查询的第二个查询,将其附加到优先国家/地区,然后删除重复项,但是我正在寻找更优雅的解决方案,因为这需要刷新数据两次。

标签: excelpowerquery

解决方案


Q成为要排序的查询并P成为优先级列表。然后,您可以通过附加Q ∩ P与设置差异的交集来获得所需的结果Q \ P

维恩图

这是在 M 中执行此操作的一种方法:

let
    Source =
    Table.FromList(
        List.Combine(
            {
                List.Sort( List.Intersect( { P[Country], Q[Country] } ) ),
                List.Sort( List.RemoveItems( Q[Country], P[Country] ) )
            }
        ),
        null,
        {"Country"}
    )
in
    Source

推荐阅读