应用品牌筛选时RANKX函数无法正常工作的技术求助
问题分析与解决
核心问题
你当前的RANKX公式使用ALL('OCS-daily-2018-2023'[brand])作为排名上下文,该函数会完全忽略品牌字段的筛选条件,导致即使仅选择3个品牌,排名依然基于全部品牌的总销售额计算,最终出现筛选后排名异常的情况。
修正后的DAX公式
将ALL替换为ALLSELECTED,它会保留当前的筛选上下文,仅在你选择的品牌范围内计算相对排名:
Rank (Total Sales) Brand = IF( HASONEVALUE('OCS-daily-2018-2023'[brand]), RANKX( ALLSELECTED('OCS-daily-2018-2023'[brand]), [Total Sales], , DESC, Dense ) )
关键函数说明
ALL:清除指定列的所有筛选,返回该列的全部值集合ALLSELECTED:保留用户当前的筛选选择,返回筛选后的列值集合,适用于计算筛选范围内的排名
问题背景
当对品牌字段应用筛选(仅选择Pure Sunfarms、Redecan和Good Supply)时,RANKX函数无法正常工作:
- 无筛选条件时排名显示正常:

- 应用品牌筛选后排名异常:

原计算公式:
Rank (Total Sales) Brand = IF( HASONEVALUE( 'OCS-daily-2018-2023'[brand] ), RANKX( ALL( 'OCS-daily-2018-2023'[brand] ), [Total Sales], , DESC, Dense ) )
数据模型:
内容的提问来源于stack exchange,提问作者Alejandro L
相关产品推荐
相关产品推荐

