You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Power BI DAX实现特定公司各产品组销售排名需求

Power BI 特定公司各产品组销售排名的正确DAX写法

你的度量值返回全1的原因很明确:外部筛选器已经锁定了选中的公司,导致CALCULATE(SUM([sales]))在RankX迭代时,始终只计算当前选中公司的销售额——每个产品组里只有这一个数值,排名自然都是1。

正确度量值写法(带注释)

Rank Group = 
VAR CurrentCategory = SELECTEDVALUE('Table'[Prod Group])
VAR AllCompaniesInCategory = 
    CALCULATETABLE(
        ALL('Table'[company]),
        'Table'[Prod Group] = CurrentCategory
    )
RETURN
    RANKX(
        AllCompaniesInCategory,
        CALCULATE(SUM('Table'[sales])),
        , DESC, DENSE
    )

关键逻辑说明

  • AllCompaniesInCategory变量:获取当前产品组下的所有公司,解除了外部的公司筛选限制,确保RankX能在完整的公司集合里做排名比较。
  • 保留了当前行的产品组筛选,保证排名仅在同一个产品组内进行。
  • 外部的公司筛选器只会控制最终展示的结果——当你选中特定公司后,视觉对象只会显示该公司在各产品组的排名,而排名计算的底层是基于整个产品组的所有销售数据。

简化版写法

如果觉得变量冗余,也可以用ALLEXCEPT直接实现:

Rank Group = 
RANKX(
    CALCULATETABLE(
        ALL('Table'[company]),
        ALLEXCEPT('Table', 'Table'[Prod Group])
    ),
    CALCULATE(SUM('Table'[sales])),
    , DESC, DENSE
)

ALLEXCEPT('Table', 'Table'[Prod Group])的作用是移除除产品组外的所有筛选,直接得到当前产品组下的所有公司集合,逻辑和上面的版本一致。

内容的提问来源于stack exchange,提问作者Vineesh V

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 00:53:26