PowerBI中基于起止日期统计提交请假申请员工数的DAX问题
解决PowerBI中仅统计已提交请假申请员工的DAX问题
问题分析
你的DAX代码会包含未提交请假申请的员工,核心原因是DISTINCT('Annual Leave'[First Name])会遍历表中所有员工记录,包括请假时间为空的条目。同时原代码判断请假与日期表重叠的逻辑不够严谨,可能导致无请假记录的员工被错误统计。
修正后的DAX代码
方案一:嵌套过滤+交集判断
Number of Staff on leave = COUNTROWS( FILTER( // 第一步:过滤掉无有效请假时间的员工 FILTER('Annual Leave', NOT ISBLANK('Annual Leave'[Leave Start Time]) && NOT ISBLANK('Annual Leave'[Leave End Time])), // 第二步:判断当前日期筛选(如月份)与该员工请假时间段是否有重叠 CALCULATE( NOT ISEMPTY( INTERSECT( 'Dates'[Date], DATESBETWEEN('Dates'[Date], 'Annual Leave'[Leave Start Time], 'Annual Leave'[Leave End Time]) ) ) ) ) )
方案二:更简洁的CALCULATE筛选写法
Number of Staff on leave = CALCULATE( DISTINCTCOUNT('Annual Leave'[First Name]), // 仅保留有有效请假记录的员工 NOT ISBLANK('Annual Leave'[Leave Start Time]), NOT ISBLANK('Annual Leave'[Leave End Time]), // 确保当前日期范围与请假时间段存在交集 INTERSECT('Dates'[Date], DATESBETWEEN('Dates'[Date], 'Annual Leave'[Leave Start Time], 'Annual Leave'[Leave End Time])) <> BLANK() )
关键改进说明
- 排除无申请员工:通过
NOT ISBLANK过滤掉请假开始/结束时间为空的记录,确保只统计已提交申请的员工。 - 跨月统计支持:使用
INTERSECT判断当前日期表的筛选范围(如某个月份)与员工请假时间段是否有重叠,跨月的请假会在对应月份分别被统计(比如Koffi的请假跨6月和7月,两个月份都会计入)。
内容的提问来源于stack exchange,提问作者Stéphane
相关产品推荐
相关产品推荐

