Power BI需求:编写DAX代码计算DEF类型TOTMHR的指定累计值
筛选DEF类型并按指定规则累计求和的DAX实现
需求说明
从包含year(对应示例中CoINP_YEAR)、month(对应示例中INP_MONTH)、totmhr、msjob_type(对应示例中MISJOB_TYPE)的数据表中,筛选出msjob_type = "DEF"的记录,按以下规则计算totmhr的累计总和:
- 当当前月份为4时,仅统计当年4月的
totmhr总和 - 当当前月份为5时,统计当年4月+5月的
totmhr总和 - 当当前月份为6时,统计当年4月+5月+6月的
totmhr总和 - 以此类推,后续月份均从当年4月开始累计到当前月份
DAX代码实现
DEF累计工时 = VAR 当前年份 = SELECTEDVALUE('数据表'[year]) VAR 当前月份 = SELECTEDVALUE('数据表'[month]) RETURN CALCULATE( SUM('数据表'[totmhr]), FILTER( ALL('数据表'), '数据表'[year] = 当前年份 && '数据表'[msjob_type] = "DEF" && '数据表'[month] >= 4 && '数据表'[month] <= 当前月份 ) )
代码逻辑解释
- 变量定义:通过
SELECTEDVALUE获取当前上下文的年份和月份,确保计算基于当前筛选的年月维度 - 筛选与求和:
- 使用
CALCULATE修改筛选上下文,对符合条件的记录求和 ALL('数据表')清除原有筛选,确保能跨月份累计- 筛选条件:匹配当前年份、
msjob_type为DEF、月份在4到当前月份之间
- 使用
示例数据验证
以2023年的数据为例:
- 4月DEF类型的
totmhr总和:160+50+80+0+160+160 = 610 - 5月累计总和:610 + 160×4 = 1250
- 6月累计总和:1250 + 0+40+0+160+160+160+160 = 1930
内容的提问来源于stack exchange,提问作者recharge amount
相关产品推荐
相关产品推荐

