Power Pivot新手求助:RANKX函数正确用法
解决Power Pivot中赛马赛事特定时间内马匹排名的RANKX度量值问题
你需要在Power Pivot里创建度量值,实现特定赛事时间范围内每匹马的数值排名,用于数据透视表计算字段引用。以下是正确的RANKX公式及说明:
假设你的数据表名为赛马赛事数据,包含赛事时间、马名、目标数值(即你要用来排名的字段,比如完赛时间、得分等)字段,根据排名需求选择对应的公式:
情况1:数值越小排名越靠前(比如完赛时间短的马排前面)
马匹排名 = RANKX( // 限定排名范围:当前选中赛事时间下的所有马匹 CALCULATETABLE( VALUES('赛马赛事数据'[马名]), ALLSELECTED('赛马赛事数据'[马名]), VALUES('赛马赛事数据'[赛事时间]) ), // 提取当前马匹的目标数值(如果是单值字段,用MAX/MIN替代SUM也可) CALCULATE(SUM('赛马赛事数据'[目标数值])), // 升序排名:数值小的排前面 , ASC, // 相同数值的处理:密集排名,相同数值获相同排名,后续不跳位 DENSE )
情况2:数值越大排名越靠前(比如得分高的马排前面)
只需把升序参数ASC改成降序DESC:
马匹排名 = RANKX( CALCULATETABLE( VALUES('赛马赛事数据'[马名]), ALLSELECTED('赛马赛事数据'[马名]), VALUES('赛马赛事数据'[赛事时间]) ), CALCULATE(SUM('赛马赛事数据'[目标数值])), // 降序排名:数值大的排前面 , DESC, DENSE )
注意事项
- 替换公式中的
赛马赛事数据为你的实际表名,目标数值为要排名的字段 ALLSELECTED('赛马赛事数据'[马名])用来确保排名不受数据透视表中马名字段筛选的干扰,只在当前赛事时间的所有马匹范围内计算排名- 若需要相同数值的马匹跳过排名位(比如两个第1名后直接是第3名),把
DENSE改成SKIP即可
内容的提问来源于stack exchange,提问作者martin williams
相关产品推荐
相关产品推荐

