如何在Power BI中实现自定义每日排名?DAX公式问题求助
问题分析与解决方案
你的需求是按日期分组,对Points_SA降序进行跳跃式排名(相同分数的项共享排名,后续名次跳过已占用的位置),但当前DAX公式存在两个核心问题:
- 使用
ALL(date)移除了日期的上下文筛选,导致排名计算跨所有日期,而非按单个日期独立计算。 - 指定了
Dense参数,生成的是密集排名(相同分数不跳过后续名次),与你需要的跳跃式排名不符。
修正后的DAX度量值
Rank_SA_pt = RANKX( CALCULATETABLE( ALL('Table'[Market]), -- 保留当前日期上下文,移除市场的筛选 'Table'[Date] = MAX('Table'[Date]), -- 限定为当前日期 [Points_SA] <> BLANK(), -- 排除空值 [Points_SA] <> 0 -- 排除0值 ), [Points_SA], -- 排名依据的度量值 , DESC, Skip -- 降序,跳跃式排名(Skip为默认参数,可省略) )
关键说明
CALCULATETABLE(ALL('Table'[Market]), ...):确保在当前日期的上下文内,对所有市场的Points_SA进行排名,既保留了日期的筛选,又允许市场维度自由计算。Skip参数:实现你需要的跳跃式排名逻辑,比如4/16日的3个0.6分项,前面有4个更高分数的项,因此它们的排名为5,与你的Output列一致。- 如果你的表名不是
'Table',请替换为实际的表名。
内容的提问来源于stack exchange,提问作者nard
相关产品推荐
相关产品推荐

