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

使用DAX计算每4周周期的累计工时百分比问题求助

解决Power BI矩阵中每4周周期重置的工时累计百分比问题

要实现每年内每4周为一个周期重置的工时累计,直接用普通SUM计算列只能得到单周总数,需要通过DAX计算列+度量值的组合来实现,具体步骤如下:

1. 新增4周周期标识列

首先在My_Table中添加计算列,标记每条记录所属的年度+4周周期编号,确保每个周期独立且跨年不混淆:

4周周期编号 = 
VAR 年度 = YEAR(My_Table[日期])
VAR 周数 = WEEKNUM(My_Table[日期], 2) -- 2代表周一为周起始,可根据业务调整
RETURN
年度 & "-" & CEILING(周数 / 4, 1)

该列会生成类似2024-1(当年第1-4周)、2024-2(当年第5-8周)的标识,用于后续分组累计。

2. 创建累计工时度量值

放弃计算列,改用度量值适配矩阵的动态筛选逻辑,实现同周期内的周累计:

累计工时 = 
VAR 当前周期 = SELECTEDVALUE(My_Table[4周周期编号])
VAR 当前周 = SELECTEDVALUE(My_Table[周数])
RETURN
CALCULATE(
    SUM(My_Table[Hours]),
    FILTER(
        ALLSELECTED(My_Table),
        My_Table[4周周期编号] = 当前周期 && My_Table[周数] <= 当前周
    )
)

逻辑:锁定当前行的4周周期,筛选该周期内所有周数小于等于当前周的记录,求和工时,确保每个周期从第1周重新开始累计。

3. 创建累计百分比度量值

先计算当前4周周期的总工时:

周期总工时 = 
VAR 当前周期 = SELECTEDVALUE(My_Table[4周周期编号])
RETURN
CALCULATE(
    SUM(My_Table[Hours]),
    ALLSELECTED(My_Table),
    My_Table[4周周期编号] = 当前周期
)

再计算累计工时占周期总工时的百分比:

累计工时百分比 = 
DIVIDE([累计工时], [周期总工时], 0)

使用DIVIDE避免除数为0的错误,第三个参数为默认返回值(这里设为0)。

4. 矩阵视觉配置

  • 行字段:依次添加年度 → 4周周期编号 → 周数(设置周数为升序排序)
  • 值字段:添加累计工时和累计工时百分比(将百分比字段的格式设置为“百分比”)

注意事项

  • 若使用独立日期表,可将4周周期编号列放到日期表中,再与My_Table通过日期列建立关系,逻辑更清晰。
  • WEEKNUM的第二个参数需匹配业务的周起始规则(1=周日起始,2=周一起始等)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 01:36:59