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

如何使用Power BI逐年找出销售额最高的产品?

在Power BI中逐年找出销售额最高产品的最优方法

先调整数据结构(关键第一步)

你的原始数据是宽表(产品作为列),这种结构不利于Power BI做分组统计。先在Power Query编辑器里把数据转成长表:

  • 选中「年份」和「区域」列,右键选「逆透视其他列」
  • 把自动生成的「属性」列改名为「产品」,「值」列改名为「销售额」
    这样每一行对应一条「年份-区域-产品-销售额」的记录,后续计算会顺畅很多。

关于Null值的影响

Power BI的SUM、MAX这类聚合函数会自动忽略Null值,不会把它当成0算,所以正常情况下不会影响你的总销售额统计和最大值判断。如果确实需要把Null当成0处理,要么在Power Query里用「替换值」把Null换成0,要么在DAX里用COALESCE([销售额], 0)来转换。

用DAX实现年度Top产品统计

1. 基础度量值

先创建一个计算总销售额的基础度量:

总销售额 = SUM('销售数据'[销售额])

2. 标记年度Top1产品

如果要在表格里直接看到哪些产品是当年的Top1,用这个度量:

是否为年度Top1 = 
VAR 产品年度销售额 = CALCULATE([总销售额], ALLEXCEPT('销售数据', '销售数据'[年份], '销售数据'[产品]))
VAR 年度最高销售额 = CALCULATE([总销售额], ALLEXCEPT('销售数据', '销售数据'[年份]), TOPN(1, ALL('销售数据'[产品]), [总销售额]))
RETURN IF(产品年度销售额 = 年度最高销售额, "是", "否")

之后在可视化里,把「是否为年度Top1」作为筛选条件选「是」,就能只显示每年的Top产品。

3. 直接返回年度Top产品名称

如果要在卡片或表格里直接显示每年的Top产品名字(支持并列第一的情况),用这个度量:

年度Top产品 = 
VAR 年度最高额 = CALCULATE([总销售额], ALLEXCEPT('销售数据', '销售数据'[年份]))
VAR 候选产品 = 
CALCULATETABLE(
    VALUES('销售数据'[产品]),
    FILTER(ALL('销售数据'[产品]), [总销售额] = 年度最高额)
)
RETURN CONCATENATEX(候选产品, '销售数据'[产品], ", ")

如果当年有多个产品销售额并列第一,会用逗号把它们连起来显示。

4. 按区域+年份找Top产品

如果需要看每个区域每年的Top产品,修改一下度量里的上下文:

区域年度Top产品 = 
VAR 区域年度最高额 = CALCULATE([总销售额], ALLEXCEPT('销售数据', '销售数据'[年份], '销售数据'[区域]))
VAR 候选产品 = 
CALCULATETABLE(
    VALUES('销售数据'[产品]),
    FILTER(ALL('销售数据'[产品]), [总销售额] = 区域年度最高额)
)
RETURN CONCATENATEX(候选产品, '销售数据'[产品], ", ")

可视化小技巧

  • 矩阵/表格:行放年份,列放产品,值放总销售额,再给总销售额加条件格式(比如用颜色突出每年的最大值)
  • 卡片图+切片器:加个年份切片器,卡片图显示「年度Top产品」和对应的总销售额,切换年份就能看不同年份的结果
  • 条形图:按年份分组,只显示各年Top1产品的销售额,直观对比各年Top产品的表现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:33:31