如何在Tableau中获取选区维度的第二高得票候选人?
在Tableau中提取各选区第二高得票候选人的解决方案
方法一:基于排名函数的直接筛选
创建排名计算字段
新建计算字段[候选人排名],输入公式:RANK([得票数], 'desc')关键设置:在计算字段编辑窗口右上角,将计算依据改为「选区」,确保排名是按每个选区单独计算的。
筛选第二高记录
将[候选人排名]拖入筛选器面板,选择「2」,即可保留各选区得票排名第二的候选人。
方法二:LOD表达式处理并列情况(解决rank_dense()失效场景)
如果你的数据存在并列第一的情况,rank_dense()会导致第二高的排名序号大于2,这时用LOD表达式更稳妥:
- 计算选区最高得票数
新建计算字段[选区最高得票]:{FIXED [选区] : MAX([得票数])} - 计算选区第二高得票数
新建计算字段[选区第二高得票]:{FIXED [选区] : MAX(IF [得票数] < [选区最高得票] THEN [得票数] END)} - 筛选匹配第二高得票的候选人
将[得票数] = [选区第二高得票]作为筛选条件,即可精准定位各选区第二高得票的候选人(支持并列第二的情况)。
注意事项
- 确保「选区」字段处于维度面板中,所有计算都会基于每个选区分区执行;
- 若需保留州维度的层级,可在LOD表达式中加入
[州],例如{FIXED [州], [选区] : MAX([得票数])}。
内容的提问来源于stack exchange,提问作者anujjuthani
相关产品推荐
相关产品推荐

