使用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
相关产品推荐
相关产品推荐

