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

DAX按ID判断最新日期:新增IS_LAST布尔列公式异常求助

问题解决:新增IS_LAST布尔列判断是否为ID最新日期

原公式错误原因

  1. 括号匹配错误:原公式将=0嵌套在FILTER的括号内,导致COUNTROWS计算的是布尔值的行数,逻辑完全错误,正确逻辑应该是先计算FILTER返回的表行数,再判断是否为0。
  2. 上下文引用冲突:在FILTER内部直接使用[ID]和[DATETIME]时,会被解析为FILTER上下文内的当前行值,导致筛选条件变成“当前行ID等于自身ID且当前行日期大于自身日期”,后者永远为假,所以COUNTROWS始终返回0,所有行都返回TRUE。

正确的DAX公式

方法一:使用变量存储当前行值(可读性高)

IS_LAST = 
VAR Current_ID = [ID]
VAR Current_Datetime = [DATETIME]
RETURN
IF(
    COUNTROWS(
        FILTER(
            TABLE,
            TABLE[ID] = Current_ID && TABLE[DATETIME] > Current_Datetime
        )
    ) = 0,
    TRUE(),
    FALSE()
)

方法二:直接对比当前日期与ID的最大日期(更简洁)

IS_LAST = [DATETIME] = MAXX(FILTER(TABLE, TABLE[ID] = [ID]), TABLE[DATETIME])

说明

  • 方法一中,用VAR将当前行的ID和DATETIME存储为变量,确保FILTER内部引用的是外部上下文(当前行)的值,而非筛选过程中的行值。
  • 方法二中,MAXX函数会针对当前ID筛选出所有行,并返回其中最大的日期,直接与当前行日期对比即可得到结果,逻辑更直观。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:55:11