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
相关产品推荐
相关产品推荐

