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

Power BI如何通过DAX基于分钟级数据计算每小时平均收入

Power BI 计算作业每小时平均收入的DAX方案

首先明确统计逻辑:按小时维度统计的平均收入本质是加权小时产出,即统计范围内的总收入除以总耗时(折算为小时单位),不要直接对单作业的小时收入取算术平均,否则会因为时长权重差异导致结果失真。
先给你用提供的样例数据做校验,写完公式可以直接对照结果:

  • 样例总耗时:12+24+38+82 = 156分钟 = 2.6小时
  • 样例总收入:450+600+950+1800 = 3800欧元
  • 正确的全局平均每小时收入:3800 / 2.6 ≈ 1461.54欧元/小时

前置确认

假设你的作业明细存储在名为作业事实表的表中,包含以下两个核心字段:

  • 作业耗时(分钟):数值类型,记录单作业的耗时,单位为分钟
  • 作业收入(欧元):数值类型,记录单作业对应的创收金额
    如果你后续需要按自然小时(比如作业完成时间所在的0点、1点……23点)分组统计,表中还需要有作业完成时间的日期时间类型字段。

核心DAX度量值

直接新建以下度量值即可,度量值会自动适配你报表上的所有筛选、切片、维度下钻:

每小时平均收入 = 
DIVIDE(
    SUM(作业事实表[作业收入(欧元)]),
    DIVIDE(SUM(作业事实表[作业耗时(分钟)]), 60),
    BLANK()
)

公式说明:

  • 第一参数为分子:计算当前筛选上下文下的所有作业总收入
  • 第二参数为分母:把当前筛选上下文下的总耗时从分钟折算为小时
  • 第三参数为容错值:当前筛选范围无作业数据时返回空值,不会显示报错乱码

常见错误避坑

  1. 不要写逐行计算单作业小时收入再取平均的逻辑,比如以下写法是错的:
    // 错误写法:算术平均未考虑时长权重,样例数据计算结果为1641.75欧元,和真实值偏差超过12%
    错误的平均收入 = AVERAGEX(作业事实表, DIVIDE(作业事实表[作业收入(欧元)], DIVIDE(作业事实表[作业耗时(分钟)],60)))
    
  2. 如果你的耗时字段存储的是时间/日期类型而非分钟数值,把分母替换为SUMX(作业事实表, HOUR(作业事实表[作业耗时]) + MINUTE(作业事实表[作业耗时])/60 + SECOND(作业事实表[作业耗时])/3600)即可
  3. 要做按自然小时维度的统计时,直接把作业完成时间字段拖到报表轴,展开到“小时”层级即可,度量值会自动计算每个自然小时对应的小时平均收入,不需要额外修改公式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 14:03:20