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

Power BI中计算学生辅导后考试通过率的度量值实现

按学生计算辅导后考试通过率的Power BI度量值实现

原代码问题分析

你之前的DAX逻辑存在核心问题:内层计算最早辅导日期时,没有限定当前学生的上下文,会返回所有有辅导记录学生的最早辅导日期,而非当前行对应的学生的辅导日期,导致考试记录的过滤逻辑错误。

正确度量值实现

以下是适配按学生分组需求的DAX代码,包含完整的逻辑处理:

辅导后考试通过率 = 
VAR 当前学生最早辅导日期 = 
    CALCULATE(
        MIN('Table'[Tutoring Date]),
        ALLEXCEPT('Table', 'Table'[学生列]), // 仅保留当前学生的筛选上下文
        NOT(ISBLANK('Table'[Tutor (?)])) // 排除无辅导记录的行
    )
VAR 有效考试记录 = 
    CALCULATETABLE(
        'Table',
        ALLEXCEPT('Table', 'Table'[学生列]),
        'Table'[Test Date] > 当前学生最早辅导日期 // 筛选辅导后的考试
    )
VAR 通过次数 = COUNTROWS(FILTER(有效考试记录, 'Table'[Test Pass?] = "通过")) // 按实际数据调整判断条件,比如布尔值用=TRUE()
VAR 考试总次数 = COUNTROWS(有效考试记录)
RETURN
    IF(考试总次数 = 0, BLANK(), DIVIDE(通过次数, 考试总次数)) // 无有效考试时返回空值,避免错误

关键说明

  • ALLEXCEPT('Table', 'Table'[学生列]):确保所有计算都基于当前学生的上下文,不会被其他筛选条件干扰
  • 先获取当前学生的最早辅导日期,再筛选该学生所有晚于该日期的考试记录
  • 用DIVIDE函数处理除法,同时通过IF判断避免分母为0的错误情况
  • 请根据你的实际数据调整'Table'[Test Pass?] = "通过"的判断逻辑(比如如果是布尔类型,改为'Table'[Test Pass?] = TRUE())

使用方式

将这个度量值拖入矩阵视觉对象,行字段选择你的学生列,即可按学生分组展示每个学生的辅导后考试通过率。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 13:20:50