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

Power BI可视化表格中按产品类别用平均值替换零值

在Power BI中用对应产品类别的平均值替换零值

需求说明

现有数据表如下:

Product  Customer  Value
------------------------
x        A         10
y        A         20
x        B          0
x        C         12
y        C         24
x        D         15
y        D         30

需要将Value列中的零值替换为对应Product类别下的非零值平均值,最终得到如下结果:

Product  Customer  Value
------------------------- 
x        A         10
y        A         20
x        B         12.33
x        C         12
y        C         24
x        D         15
y        D         30

解决方案:创建计算列

通过DAX创建计算列实现零值替换,步骤如下:

  1. 进入Power BI的数据视图,选中目标数据表
  2. 点击「新建列」,输入以下DAX公式(注意将'Table'替换为你实际的数据表名称):
Adjusted Value = 
VAR CurrentProduct = 'Table'[Product]
-- 计算当前产品下所有非零值的平均值
VAR ProductNonZeroAvg = 
    CALCULATE(
        AVERAGE('Table'[Value]),
        FILTER(
            'Table',
            'Table'[Product] = CurrentProduct && 'Table'[Value] <> 0
        )
    )
-- 判断当前值是否为0,是则返回保留两位小数的平均值,否则返回原值
RETURN
    IF('Table'[Value] = 0, ROUND(ProductNonZeroAvg, 2), 'Table'[Value])
  1. 在可视化面板的表格组件中,选择Product、Customer和新创建的Adjusted Value列,即可得到期望结果。

结果验证

以Product x为例,非零值为10、12、15,平均值为(10+12+15)/3 ≈ 12.33,与期望结果中Customer B的x产品值完全匹配,符合需求。

可选方案:使用度量值(动态筛选场景)

如果需要在动态筛选的场景下生效,可创建度量值替代计算列:

Adjusted Value Measure = 
VAR CurrentProduct = SELECTEDVALUE('Table'[Product])
VAR ProductNonZeroAvg = 
    CALCULATE(
        AVERAGE('Table'[Value]),
        ALLSELECTED('Table'),
        'Table'[Product] = CurrentProduct,
        'Table'[Value] <> 0
    )
RETURN
    IF(SELECTEDVALUE('Table'[Value]) = 0, ROUND(ProductNonZeroAvg, 2), SELECTEDVALUE('Table'[Value]))

在可视化表格中选择Product、Customer和该度量值即可正常显示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 19:06:11