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

Power BI DAX报错调试求助:统计月驻场≥2周员工数

问题分析与解决方案

原代码核心问题

  1. 语法错误:SUMMARIZE里的SUM('Table1'[WeeksOnsite])完全错误——WeeksOnsite是你在ADDCOLUMNS里临时生成的列,不属于Table1,不能用表名引用。
  2. 逻辑错误:你用CALCULATE(COUNTROWS('Timelogs'), 'Timelogs'[is_Onsite] >=3)计算驻场周数完全不符合需求:is_Onsite是1/0标记单日是否驻场,不是天数,而且没有按员工+周分组统计该周的总驻场天数,根本无法判断是否满足“每周驻场≥3天”的条件。

修正后的DAX代码

CountEmployeesOnsiteAtLeast2WeeksPerMonth = 
VAR ValidOnsiteWeeks =
    // 第一步:按员工、年周分组,计算该周驻场天数,标记是否为有效驻场周(≥3天)
    SUMMARIZE(
        FILTER('Timelogs', 'Timelogs'[Log Type] = "Time-In"), // 只保留签到记录
        'Timelogs'[Employee Name],
        'Date'[YearWeek], // 确保Date表有年周字段,用于按周分组
        'Date'[Month], // 关联到月份
        "WeeklyOnsiteDays", SUM('Timelogs'[is_Onsite]), // 统计该周驻场总天数
        "IsValidOnsiteWeek", IF(SUM('Timelogs'[is_Onsite]) >=3, 1, 0) // 标记是否为有效驻场周
    )
VAR EmployeeMonthlyValidWeeks =
    // 第二步:按员工、月份分组,统计有效驻场周的总数
    SUMMARIZE(
        ValidOnsiteWeeks,
        [Month],
        [Employee Name],
        "TotalValidOnsiteWeeks", SUM([IsValidOnsiteWeek])
    )
// 第三步:筛选出有效周数≥2的员工,计数
RETURN
COUNTROWS(
    FILTER(EmployeeMonthlyValidWeeks, [TotalValidOnsiteWeeks] >=2)
)

关键说明

  • 确保你的Date表包含**年周(YearWeek)**字段(比如格式为"2024-W01"),用来按周聚合数据——这是判断“驻场周”的核心维度。
  • SUM('Timelogs'[is_Onsite])会把该员工该周的所有驻场天数(1累加)求和,得到周驻场总天数,再判断是否≥3天。
  • 分步骤用变量(VAR)拆分逻辑,不仅更容易调试,也让代码可读性更强。

额外调试提示

  1. 先单独计算ValidOnsiteWeeks变量,放到可视化里查看:每个员工每周的驻场天数、是否标记为有效周,确认数据是否符合预期。
  2. 再查看EmployeeMonthlyValidWeeks变量,检查每个员工每月的有效周数统计是否正确。
  3. 如果Date表没有年周字段,可以直接在Date表中添加计算列生成:
    YearWeek = FORMAT('Date'[Date], "YYYY-WWW")
    

内容的提问来源于stack exchange,提问作者Stefan Salazar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:57:29