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

多课程筛选下DAX计算过往通过率异常问题求助

修正多选课程时DAX过往通过率计算错位问题

问题描述

创建包含非连续课程开始日期的表格时,单课程(如Engl或Math)的过往通过率显示正常,但多选课程后,DAX计算的过往通过率出现错位,所有值向上偏移一个课程。

期望效果

课程开始日期课程ID通过率过往通过率
08/11/2023Engl75%80%
04/11/2023Engl80%65%
01/25/2023Engl65%
08/11/2023Math91%52%
04/11/2023Math52%78%
01/25/2023Math78%
08/11/2023Hist72%61%
04/11/2023Hist61%88%
01/25/2023Hist88%

实际错误结果

课程开始日期课程ID通过率过往通过率
08/11/2023Engl75%52%
04/11/2023Engl80%78%
01/25/2023Engl65%
08/11/2023Math91%61%
04/11/2023Math52%88%
01/25/2023Math78%
08/11/2023Hist72%80%
04/11/2023Hist61%65%
01/25/2023Hist88%

原DAX代码

Previous Passing Rate=
var CurrentYearMonth = SELECTEDVALUE('Course Info Table'[YearMonth])

var PreviousYearMonth = CALCULATE(
MAX('Course Info Table'[YearMonth]),
ALLSELECTED('Course Info Table'),
KEEPFILTERS('Course Info Table'[YearMonth] < CurrentYearMonth), KEEPFILTERS('Course Info Table'[Course ID]='Course Info Table'[Course ID]))

var result = CALCULATE([Passing Rate], ALLSELECTED('Course Info Table'), 'Course Info Table'[YearMonth] = PreviousYearMonth)

return
result

问题原因

原代码中KEEPFILTERS('Course Info Table'[Course ID]='Course Info Table'[Course ID])是无效筛选条件,同一列自身相等永远成立,导致计算PreviousYearMonth时没有限定在当前行的课程ID范围内,而是在所有选中课程中查找小于当前YearMonth的最大值,最终跨课程取到了其他课程的日期,造成结果错位。

修正后的DAX代码

Previous Passing Rate =
VAR CurrentCourseID = SELECTEDVALUE('Course Info Table'[Course ID])
VAR CurrentYearMonth = SELECTEDVALUE('Course Info Table'[YearMonth])
VAR PreviousYearMonth = CALCULATE(
    MAX('Course Info Table'[YearMonth]),
    ALLSELECTED('Course Info Table'),
    'Course Info Table'[Course ID] = CurrentCourseID,
    'Course Info Table'[YearMonth] < CurrentYearMonth
)
VAR Result = CALCULATE(
    [Passing Rate],
    ALLSELECTED('Course Info Table'),
    'Course Info Table'[Course ID] = CurrentCourseID,
    'Course Info Table'[YearMonth] = PreviousYearMonth
)
RETURN Result

改动说明

  1. 新增CurrentCourseID变量,获取当前行的课程ID,确保所有计算限定在同一课程的上下文内
  2. 在计算PreviousYearMonth和最终结果Result时,明确添加'Course Info Table'[Course ID] = CurrentCourseID的筛选条件,彻底避免跨课程取值
  3. 移除冗余的KEEPFILTERS,使筛选逻辑更清晰直接

修正后,多选课程时每个课程的过往通过率会正确对应自身的历史数据,不会再出现错位问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 17:07:47