Power BI Desktop平均值计算异常,求排查与计算逻辑确认
问题根源:混淆了「比例平均值」和「数量平均值」
你现在的核心困惑在于:你用Power BI计算的是任务状态的占比平均值,但你实际想要的是每日平均总任务数量,这是两个完全不同的统计逻辑,所以结果自然不符合预期。
为什么会得到0.44和0.56?
你的OpenTasks和ClosedTasks是0/1标记列(1代表该任务对应状态,0代表不是)。当你对这两列直接计算平均值时:
OpenTasks的平均值 = 所有行中OpenTasks=1的行数 ÷ 总行数(总任务数)ClosedTasks的平均值 = 所有行中ClosedTasks=1的行数 ÷ 总行数
所以0.44和0.56其实是「未完成任务占总任务的比例」和「已完成任务占总任务的比例」,加起来刚好是100%,这个计算逻辑本身是对的,但和你想要的结果完全不是一回事。
如何得到你期望的「每日平均总任务数」?
你想要的2818 ÷ 10 = 281,本质是总任务数 ÷ 有任务的天数,这属于「按日期维度的总任务均值」,需要通过自定义度量值实现:
步骤1:创建总任务数度量值
因为每个任务要么是Open要么是Closed,所以总任务数可以用两列的和来计算:
总任务数 = SUM('你的表名'[OpenTasks]) + SUM('你的表名'[ClosedTasks])
或者如果每行对应一个任务,也可以直接用行数统计:
总任务数 = COUNTROWS('你的表名')
步骤2:创建任务天数度量值
统计有任务记录的唯一日期数量:
任务天数 = DISTINCTCOUNT('你的表名'[日期列])
步骤3:计算每日平均任务数
用DIVIDE函数避免除数为0的错误:
每日平均任务数 = DIVIDE([总任务数], [任务天数])
把这个度量值放到矩阵中,就能得到你想要的类似281的结果了。
额外提醒
- 确保你的「日期列」是Power BI识别的日期类型,否则
DISTINCTCOUNT可能无法正确统计天数。 - 如果你的数据中存在某一天没有任务的情况,而你希望把这些天数也纳入计算(比如10天中有2天无任务,按10天算而不是8天),那需要用完整的日期表来关联,再计算所有日期的数量。
内容的提问来源于stack exchange,提问作者Serdia




