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

DAX计算平均值异常:如何获取父级ID的正确平均值?

解决Power BI中仅计算父级ID的Time平均值问题

问题分析

你的原DAX逻辑完全偏离需求:先计算所有行的Time平均值,再除以所有ID(父级+子级)的去重数量,这和你要的「仅取父级ID对应的Time值求平均」逻辑不符。正确思路应该是先筛选出父级ID的行,再计算这些行的Time平均值。

父级ID判断逻辑

根据你的描述,父级ID为纯数字(如1、2、3),子级ID包含字母(如...a、...b),可以用ISNUMBER(VALUE(Table1[ID]))筛选父级——子级ID转换为数值时会返回错误,该条件会自动排除子级。

修改后的DAX代码

方案1:直接筛选父级行计算平均

适用于每个父级ID仅对应一行数据的场景:

父级平均Time = 
CALCULATE(
    AVERAGE(Table1[Time]),
    FILTER(
        Table1,
        ISNUMBER(VALUE(Table1[ID]))
    )
)

方案2:先去重父级再计算平均

适用于父级ID对应多行数据,但同一父级的Time值唯一的场景:

父级平均Time = 
VAR 父级唯一集合 = 
    SUMMARIZE(
        FILTER(Table1, ISNUMBER(VALUE(Table1[ID]))),
        Table1[ID],
        "对应Time", MAX(Table1[Time])
    )
RETURN
    AVERAGEX(父级唯一集合, [对应Time])

结果验证

代入你的示例数据(104、86、151),上述代码会直接计算(104+86+151)/3 = 113.6,得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 12:05:12