You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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()
)

关键改进说明

  1. 排除无申请员工:通过NOT ISBLANK过滤掉请假开始/结束时间为空的记录,确保只统计已提交申请的员工。
  2. 跨月统计支持:使用INTERSECT判断当前日期表的筛选范围(如某个月份)与员工请假时间段是否有重叠,跨月的请假会在对应月份分别被统计(比如Koffi的请假跨6月和7月,两个月份都会计入)。

内容的提问来源于stack exchange,提问作者Stéphane

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 17:25:57