PowerBI中用DAX按员工ID统计总时长(小时+分钟)
解决方案:DAX计算并格式化员工总时长
计算列DAX公式
创建名为Total Hours的计算列,代码如下:
Total Hours = VAR TotalMinutes = CALCULATE( SUM('员工数据'[Duration (Minutes)]), ALLEXCEPT('员工数据', '员工数据'[EmpID]) ) VAR Hours = INT(TotalMinutes / 60) VAR Mins = MOD(TotalMinutes, 60) RETURN IF( Hours > 0, Hours & " hours " & Mins & " mins", Mins & " mins" )
代码说明
TotalMinutes:通过ALLEXCEPT锁定当前行的EmpID筛选条件,计算该员工所有记录的总分钟数。Hours:将总分钟数除以60后取整,得到完整小时数。Mins:用MOD函数计算总分钟数除以60的余数,得到剩余分钟数。RETURN逻辑:判断小时数是否大于0,分别返回“X hours Y mins”或“Y mins”格式的字符串。
验证结果
将该计算列添加到表格后,会自动按EmpID计算并格式化总时长,效果如下:
| EmpID | Emp Name | Duration (Minutes) | Total Hours |
|---|---|---|---|
| 001 | Marc Jacobs | 30 | 2 hours 30 mins |
| 001 | Marc Jacobs | 40 | 2 hours 30 mins |
| 001 | Marc Jacobs | 80 | 2 hours 30 mins |
| 002 | Bruce Wayne | 30 | 55 mins |
| 002 | Bruce Wayne | 25 | 55 mins |
| 003 | Brad Pitt | 40 | 2 hours 40 mins |
| 003 | Brad Pitt | 40 | 2 hours 40 mins |
| 003 | Brad Pitt | 80 | 2 hours 40 mins |
内容的提问来源于stack exchange,提问作者Spades
相关产品推荐
相关产品推荐

