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

Power BI:按ID_OBJECT计算任务平均时长问题求助

Power BI:计算每个ID_OBJECT对应的平均Duration

正确实现方法

1. 计算列(每行显示对应ID_OBJECT的平均时长)

如果需要在表的每行直接显示当前ID_OBJECT对应的平均Duration,可以用以下两种写法:

写法一(推荐,更高效简洁)

AverageDuration_Column = 
VAR CurrentIDObj = 'EXECUTIONS'[ID_OBJECT]
RETURN
CALCULATE(
    AVERAGE('EXECUTIONS'[Duration]),
    ALLEXCEPT('EXECUTIONS', 'EXECUTIONS'[ID_OBJECT])
)

ALLEXCEPT会保留当前行ID_OBJECT的筛选上下文,移除其他所有筛选,从而计算该ID_OBJECT下所有记录的平均时长。

写法二(修正你原公式的拼写错误)

你的公式2仅存在函数名拼写错误(AVERGEX→AVERAGEX),修正后即可正常使用:

AverageDuration_Column = 
VAR id_obj = 'EXECUTIONS'[ID_OBJECT]
RETURN
AVERAGEX(
    FILTER(ALL('EXECUTIONS'), 'EXECUTIONS'[ID_OBJECT] = id_obj),
    'EXECUTIONS'[Duration]
)

2. 度量值(用于可视化展示,更灵活)

如果是在报表可视化(如卡片图、表格)中展示每个ID_OBJECT的平均时长,推荐使用度量值,它会根据当前筛选上下文自动计算:

AverageDuration_Measure = 
CALCULATE(
    AVERAGE('EXECUTIONS'[Duration]),
    ALLEXCEPT('EXECUTIONS', 'EXECUTIONS'[ID_OBJECT])
)

将该度量值拖入表格,搭配ID_OBJECT字段,即可得到每个任务/计划对应的平均执行时长。

原公式错误原因分析

  • 公式1:AVERAGEX的第一个参数是提取所有唯一的ID_OBJECT,但第二个参数[Duration]引用的是当前行的时长值,相当于把每个ID_OBJECT的某一行时长取平均,而非该ID_OBJECT下所有记录的时长平均,逻辑完全错误。
  • 公式2:仅存在函数名拼写错误(AVERGEX应为AVERAGEX),修正拼写后即可得到正确结果,但ALLEXCEPT写法比FILTER(ALL(...))性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 13:32:14