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

Power BI DAX:计算符合全月分配条件的筛选员工数量

Power BI DAX 问题修复:职级细分统计错误

问题背景

现有员工月度分配数据集,通过日期切片器筛选数据,已用DAX度量值筛选出**所有筛选月份均有分配(分配值>0)**的员工,对应矩阵视觉对象显示正常。但在统计总唯一员工数的度量值中,总数值正确,但按职级细分时统计结果错误。

原布尔筛选度量值:

Employee Allocated All Months Boolean = 
Var _count = 
        CALCULATE(
            DISTINCTCOUNT('Calendar'[Month]), 
            FILTER(
                ALLSELECTED(Competency),
                Competency[Emp Code] = MAX(Competency[Emp Code])
            )
        )
    Var _total = 
        CALCULATE(
            DISTINCTCOUNT('Calendar'[Month]), 
            ALLSELECTED(Competency)
        )
RETURN 
    IF(_count = _total, 1)

原统计度量值:

Total Unique Resources - Test = 
CALCULATE(
    DISTINCTCOUNT(Competency[Emp Code]), 
    FILTER(
        Competency, 
        [Employee Allocated All Months Boolean] = 1
    )
)

问题根源

原布尔度量值中使用MAX(Competency[Emp Code]),在无维度(如职级)的全局上下文时,能正确匹配单个员工编码;但添加职级等维度分组后,MAX(Competency[Emp Code])会返回当前职级分组内的最大员工编码,而非逐个员工判断是否满足“所有筛选月份均有分配”的条件,导致筛选逻辑失效,职级细分统计错误。

解决方案

方案1:重构布尔度量值+更新统计逻辑

修改布尔度量值,使其基于单个员工上下文计算,不受外部维度干扰:

Employee Allocated All Months Boolean = 
VAR SelectedMonths = CALCULATE(DISTINCTCOUNT('Calendar'[Month]), ALLSELECTED('Calendar'))
VAR EmployeeMonths = CALCULATE(DISTINCTCOUNT('Calendar'[Month]), ALLEXCEPT(Competency, Competency[Emp Code]))
RETURN IF(EmployeeMonths = SelectedMonths, 1, 0)

更新统计度量值,针对单个员工维度筛选:

Total Unique Resources = 
CALCULATE(
    DISTINCTCOUNT(Competency[Emp Code]),
    FILTER(
        VALUES(Competency[Emp Code]),
        [Employee Allocated All Months Boolean] = 1
    )
)

方案2:合并逻辑到统计度量值(无需单独布尔度量)

直接在统计度量值中逐个员工判断条件,避免上下文冲突:

Total Unique Resources = 
VAR SelectedMonths = CALCULATE(DISTINCTCOUNT('Calendar'[Month]), ALLSELECTED('Calendar'))
RETURN
SUMX(
    VALUES(Competency[Emp Code]),
    VAR EmpMonths = CALCULATE(DISTINCTCOUNT('Calendar'[Month]), ALLEXCEPT(Competency, Competency[Emp Code]))
    RETURN IF(EmpMonths = SelectedMonths, 1, 0)
)

说明

两种方案均通过ALLEXCEPT(Competency, Competency[Emp Code])锁定单个员工的上下文,确保计算每个员工在所选月份中的分配月数,再与总筛选月数对比,无论是否添加职级等维度分组,都能正确统计符合条件的员工数量。

内容的提问来源于stack exchange,提问作者Asad Hussain

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 00:45:34