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

如何在PowerPivot中按层级实现正确的工时占比计算

PowerPivot工时占比分层计算解决方案

核心问题

在全局→项目→任务→工时记录的多层级数据模型中,planned_hours在任务及以上层级默认求和,导致工时占比计算错误,需针对不同层级动态调整计算逻辑。

解决方案:DAX度量值实现

  1. 基础度量值定义

    • 实际耗时总和:
      Total Time Spent = SUM('工时记录表'[time_spent])
      
    • 任务级计划工时(取任务唯一计划值,避免多条工时记录重复求和):
      Task Planned Hours = MAX('工时记录表'[planned_hours])
      
  2. 分层占比核心度量值
    利用ISINSCOPE识别当前上下文层级,结合DIVIDE处理除法逻辑:

    Hour Ratio = 
    SWITCH(
        TRUE(),
        -- 工时记录层级:单条记录实际耗时/计划工时
        ISINSCOPE('工时记录表'[工时记录ID]), DIVIDE('工时记录表'[time_spent], '工时记录表'[planned_hours], 0),
        -- 任务层级:任务实际总耗时/任务计划工时
        ISINSCOPE('工时记录表'[任务ID]), DIVIDE([Total Time Spent], [Task Planned Hours], 0),
        -- 项目/全局层级:所有子任务实际总耗时之和 / 所有子任务计划工时之和
        DIVIDE(
            SUMX(VALUES('工时记录表'[任务ID]), [Total Time Spent]),
            SUMX(VALUES('工时记录表'[任务ID]), [Task Planned Hours]),
            0
        )
    )
    

关键说明

  • ISINSCOPE用于判断当前所处数据层级,确保不同层级执行对应计算逻辑
  • Task Planned Hours使用MAX而非SUM,因为每个任务的计划工时是唯一值,避免多条工时记录重复求和
  • DIVIDE函数第三个参数设为0,防止除数为0时出现计算错误
  • 请根据实际表名、列名(如工时记录表、工时记录ID等)替换为你的模型对应名称

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:06:26