基于最新生效日期的Power BI DAX薪资求和与平均度量开发需求
单表Power BI中获取员工最新薪资及平均值的DAX实现
针对仅含单表、无法创建计算表的场景,以下是满足需求的两个DAX度量:
1. 员工最新薪资总和
该度量会为每位员工忽略部门、职位等筛选条件,提取其最新生效日期对应的薪资,再汇总所有员工的该薪资值:
最新薪资总和 = SUMX ( VALUES ( '员工表'[员工姓名] ), VAR 员工最新生效日期 = CALCULATE ( MAX ( '员工表'[生效日期] ), ALLEXCEPT ( '员工表', '员工表'[员工姓名] ) ) RETURN CALCULATE ( SUM ( '员工表'[薪资] ), '员工表'[生效日期] = 员工最新生效日期, ALLEXCEPT ( '员工表', '员工表'[员工姓名] ) ) )
逻辑说明:
VALUES ( '员工表'[员工姓名] ):获取当前上下文的所有员工(无筛选时为全部员工)ALLEXCEPT ( '员工表', '员工表'[员工姓名] ):仅保留员工姓名的筛选,清除部门、职位等其他所有筛选,确保每个员工的最新日期不受切片器影响- 先计算每位员工的最新生效日期,再筛选该日期对应的薪资,最后通过SUMX汇总所有员工的结果
2. 员工最新薪资平均值
基于同样逻辑,将求和替换为平均,得到所有员工最新薪资的平均值:
最新薪资平均值 = AVERAGEX ( VALUES ( '员工表'[员工姓名] ), VAR 员工最新生效日期 = CALCULATE ( MAX ( '员工表'[生效日期] ), ALLEXCEPT ( '员工表', '员工表'[员工姓名] ) ) RETURN CALCULATE ( SUM ( '员工表'[薪资] ), '员工表'[生效日期] = 员工最新生效日期, ALLEXCEPT ( '员工表', '员工表'[员工姓名] ) ) )
验证示例:
针对James(最新日期2025-08-25,薪资5000)、John(最新日期2025-08-15,薪资38000)、Mike(最新日期2025-06-30,薪资18000)的场景,上述度量会返回:
- 最新薪资总和:61000.00
- 最新薪资平均值:20333.33
内容的提问来源于stack exchange,提问作者user3812887




