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

PowerBI用DAX实现支持门店筛选的产品计数、占比及累计占比计算

Power BI 动态销售指标DAX实现方案

将STORE字段添加为报表切片器,表格可视化的行维度绑定PRODUCT字段,依次放入以下三个编写完成的度量值,即可实现筛选门店时所有指标动态更新的效果,解决快速度量值累计占比排序错误的问题。


1. Subtotal(产品销售记录小计)

统计当前筛选上下文下对应产品的销售记录条数,DAX代码如下:

Subtotal = COUNTROWS('Sales')

注:请将代码中'Sales'替换为你实际的销售数据集表名

2. Percentage(单产品销量占当前上下文总销量比例)

计算当前产品销量占选中范围内总销量的占比,自动适配切片器筛选规则,DAX代码如下:

Percentage = 
DIVIDE(
    [Subtotal],
    CALCULATE([Subtotal], ALLSELECTED('Sales'[PRODUCT])),
    0
)

将该度量值的数字格式设置为「百分比」即可正常展示。此处用ALLSELECTED而非ALL函数,是为了保留STORE切片器的筛选效果:比如选中NORTH门店时,分母仅计算NORTH门店的总销量,不会统计全门店的全量数据。

3. running %(按销量排序的累计占比)

快速度量值生成的累计占比排序错误,核心原因是默认按产品名称维度排序,未按实际销量值排序。以下DAX会自动按当前筛选上下文下的产品销量从高到低排序,计算累计占比:

running % = 
VAR CurrentProdSales = [Subtotal]
VAR AllSelectedProd = ALLSELECTED('Sales'[PRODUCT])
VAR HigherOrEqualSalesProd = 
    FILTER(
        AllSelectedProd,
        CALCULATE([Subtotal]) >= CurrentProdSales
    )
VAR CumulativeVal = CALCULATE([Subtotal], HigherOrEqualSalesProd)
VAR TotalVal = CALCULATE([Subtotal], AllSelectedProd)
RETURN
DIVIDE(CumulativeVal, TotalVal, 0)

同样将该度量值格式设置为「百分比」即可。


效果校验

  • 无任何筛选时:表格展示所有产品的销售记录数、全量占比、按全量销量排序的累计占比,最终累计值为100%
  • 筛选NORTH门店时:表格自动过滤仅展示该门店有销售记录的AAA、BBB两款产品,三个指标全部基于NORTH门店的销售数据重新计算,累计占比也会按照该门店下的产品销量重新排序累加,不会沿用全量数据的排序逻辑

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 15:36:24