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

DAX技术问题:基于Index获取每个ID的最后一行数据

按ID获取对应最大Index行的DAX解决方案

需求:基于Index列,获取每个ID对应的最后一行数据(即每个ID取其最大Index值所在的行)。原DAX度量值未得到正确结果,预期输出为127,实际返回5。

原错误DAX代码

Last row of ID's = CALCULATE(COUNT('Table'[ID]),
    GROUPBY('Table', 'Table'[ID]),
    FILTER(Table, Table[Index] = MAX('Table'[Index])))

示例数据

IDDateIndex
101512021-10-041
101512021-10-052
101512021-10-063
101512021-10-074
101512021-10-085
101522021-10-046
101522021-10-057
101522021-10-068
101532021-10-049
101532021-10-0510

问题分析

原代码逻辑存在两处关键问题:

  • MAX('Table'[Index])是在整个表的上下文计算最大值,而非每个ID分组后的最大值,导致仅筛选出全局最大Index的行;
  • CALCULATE中GROUPBY与FILTER的组合逻辑混乱,未正确实现"按ID分组取最大Index"的需求。

正确解决方案

方案1:创建计算表,直接获取所有ID的最后一行数据

此方法会生成一张新表,包含每个ID对应最大Index的完整行数据:

Last Rows per ID = 
VAR MaxIndexPerID = 
    SUMMARIZE(
        'Table',
        'Table'[ID],
        "@MaxIndex", MAX('Table'[Index])
    )
RETURN
    NATURALINNERJOIN('Table', MaxIndexPerID)

方案2:度量值计算符合条件的行数(对应预期输出127的场景)

如果需要统计每个ID最后一行的总数量,可使用此度量值:

Count of Last Rows = 
COUNTROWS(
    SUMMARIZE(
        'Table',
        'Table'[ID],
        "@MaxIndex", MAX('Table'[Index])
    )
)

方案3:度量值返回当前ID的最大Index值

在矩阵/表格中每行显示对应ID的最大Index值,可使用:

Max Index per ID = 
CALCULATE(
    MAX('Table'[Index]),
    ALLEXCEPT('Table', 'Table'[ID])
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 12:45:34