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
相关产品推荐
相关产品推荐

