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

获取各学生指定月份最新分数的DAX公式及月度平均分实现方案

解决DAX获取学生当月最新分数的问题

需求明确:获取每个学生指定月份内最晚日期对应的分数(忽略Session字段),后续基于这些分数生成月度平均分图表。

你当前的代码是基于Session字段取最大值来匹配分数,现在需要改成基于Date字段的最晚日期来处理,下面是调整后的两种可行写法:

写法一:分步明确逻辑

Latest Score = 
VAR CurrentStudent = SELECTEDVALUE(tbl[Student Name])
VAR CurrentYear = YEAR(SELECTEDVALUE(tbl[Date]))
VAR CurrentMonth = MONTH(SELECTEDVALUE(tbl[Date]))
-- 获取当前学生当月的最晚日期
VAR LatestStudentDate = 
    MAXX(
        FILTER(
            ALL(tbl),
            tbl[Student Name] = CurrentStudent &&
            YEAR(tbl[Date]) = CurrentYear &&
            MONTH(tbl[Date]) = CurrentMonth
        ),
        tbl[Date]
    )
-- 匹配该日期对应的分数
RETURN
    CALCULATE(
        MAX(tbl[Score]),
        FILTER(
            tbl,
            tbl[Student Name] = CurrentStudent &&
            tbl[Date] = LatestStudentDate
        )
    )

写法二:简洁版(利用上下文保留)

Latest Score = 
CALCULATE(
    MAX(tbl[Score]),
    -- 保留学生、年月的筛选上下文,只移除日期日级别的筛选
    ALLEXCEPT(tbl, tbl[Student Name], tbl[Date].[Year], tbl[Date].[Month]),
    -- 筛选出当前上下文内的最晚日期
    tbl[Date] = LASTDATE(tbl[Date])
)

关键调整说明

  1. 替换了原来基于Session的匹配逻辑,改为基于Date字段的最晚日期作为匹配条件
  2. 引入年月筛选确保只计算当前月份内的记录,避免跨月份取到更早/更晚的日期
  3. 用MAX(tbl[Score])是为了处理同一天内同一学生有多条分数记录的情况(如果当天分数唯一,用SUM/MAX都可以)

后续生成月度平均分图表

将这个Latest Score度量值拖到图表的「值」区域,然后把tbl[Date]的年月层级(比如Date[Month-Year])拖到「轴」区域,Power BI会自动计算每个月份下所有学生最新分数的平均值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 17:25:10