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

PowerPivot中计算人员单项目最大工时占比的技术问题

解决方法

核心思路

要实现需求,需分三步计算:

  • 计算每个人员的有效总工时(排除type="CNA"的记录)
  • 找出该人员名下单个项目的最大有效工时(同样排除type="CNA")
  • 用最大项目工时除以有效总工时,得到占比

正确的DAX度量值

单项目最大工时占比 = 
VAR 有效总工时 = 
    CALCULATE(
        SUM(tb_historico[hours]),
        tb_historico[type] <> "CNA",
        ALL(tb_historico[cc_pt2]) -- 确保总工时计算不受当前项目筛选影响
    )
VAR 单个项目最大工时 = 
    MAXX(
        VALUES(tb_historico[cc_pt2]), -- 迭代当前人员的所有项目
        CALCULATE(
            SUM(tb_historico[hours]),
            tb_historico[type] <> "CNA"
        )
    )
RETURN
    DIVIDE(单个项目最大工时, 有效总工时, 0) -- 避免除以0的错误

度量值说明

  1. 有效总工时:通过CALCULATE过滤type<>"CNA"的记录,同时用ALL(tb_historico[cc_pt2])清除项目维度的筛选,确保计算的是当前人员所有非CNA工时的总和,不会被数据透视表的项目筛选干扰。
  2. 单个项目最大工时:用MAXX迭代当前人员的所有项目(VALUES(tb_historico[cc_pt2])),对每个项目计算其非CNA工时总和,再取最大值。
  3. 返回结果:使用DIVIDE函数做除法,第三个参数设置为0,避免除数为0时出现错误。

数据透视表使用说明

将name拖到行区域,把这个度量值拖到值区域即可。无论是否筛选type(只要保留非CNA记录),该度量值都能正确计算每个人员的单项目最大工时占比。

之前度量值失效原因

  • 带type<>"CNA"过滤的tmp_prc返回100%,是因为计算总工时未清除项目维度筛选,导致总工时与当前项目工时相等,占比变成100%。
  • 不带过滤的tmp_prc2筛选type后失效,是因为筛选后项目工时的计算范围被限制,总工时的计算未适配筛选后的上下文。

内容的提问来源于stack exchange,提问作者Terrado Carlos Gaspar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 00:39:58