You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI DAX:按指定多条件筛选唯一候选者的实现方法

DAX实现指定候选者筛选方案

直接用DAX计算表就能实现你的三个筛选需求,以下是具体代码(注意把'候选者表'替换成你实际使用的表名):

1. 印度地区各等级(a-f)各选1位候选者

印度各等级候选者 = 
VAR 分组排名 = 
    ADDCOLUMNS(
        '候选者表',
        "@组内排名", RANKX(
            FILTER('候选者表', '候选者表'[country] = "印度" && '候选者表'[grade] = EARLIER('候选者表'[grade])),
            [candidate id],, ASC, DENSE
        )
    )
RETURN
    FILTER(分组排名, [@组内排名] = 1)

这里给印度地区每个等级的候选者按candidate id升序排序,取每组第1个;如果想按其他字段排序,把[candidate id]换成你需要的字段(比如[qualification])即可。

2. 印度以外地区各等级(a-f)各选1位候选者

非印度各等级候选者 = 
VAR 分组排名 = 
    ADDCOLUMNS(
        '候选者表',
        "@组内排名", RANKX(
            FILTER('候选者表', '候选者表'[country] <> "印度" && '候选者表'[grade] = EARLIER('候选者表'[grade])),
            [candidate id],, ASC, DENSE
        )
    )
RETURN
    FILTER(分组排名, [@组内排名] = 1)

逻辑和上面一致,仅将地区筛选条件改为“非印度”。

3. 指定科目搭配对应等级各选1位候选者

针对maths、english、hindi三个科目,分别搭配等级1、2、3各取1位:

指定科目等级候选者 = 
VAR 目标科目 = {"maths", "english", "hindi"}
VAR 目标等级 = {"1", "2", "3"} -- 如果你的grade是数值类型,去掉引号改成{1,2,3}
VAR 分组排名 = 
    ADDCOLUMNS(
        FILTER('候选者表', '候选者表'[subject] IN 目标科目 && '候选者表'[grade] IN 目标等级),
        "@组内排名", RANKX(
            FILTER('候选者表', 
                '候选者表'[subject] = EARLIER('候选者表'[subject]) && 
                '候选者表'[grade] = EARLIER('候选者表'[grade])
            ),
            [candidate id],, ASC, DENSE
        )
    )
RETURN
    FILTER(分组排名, [@组内排名] = 1)

合并所有筛选结果

如果需要把三个筛选结果合并成一个表,使用UNION函数:

最终筛选结果 = 
UNION(
    '印度各等级候选者',
    '非印度各等级候选者',
    '指定科目等级候选者'
)

内容的提问来源于stack exchange,提问作者mansi bansal

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 17:03:28