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

DAX实现:查询未结清记录对应客户及付款条件的上一次付款延迟天数

问题分析

你当前的DAX代码存在两个核心问题:

  • 未限定仅筛选当前记录之前的已结清付款,会返回同客户同付款条件下所有已结清记录里的最大延迟天数,而非「上一次(最近)」付款的延迟天数
  • 未针对「未结清记录」做过滤逻辑,会导致所有记录都返回值,不符合需求
修正后的DAX代码

假设「未结清记录」的判断标准是'table'[date of payment]为空,以下是正确的计算列/度量值代码:

Predicted delay days = 
VAR CurrentCustomer = MAX('table'[customer])
VAR CurrentPaymentCondition = MAX('table'[payment condition])
-- 获取当前客户+付款条件下,最近一次已结清付款的日期
VAR LastPaidDate = 
    CALCULATE(
        MAX('table'[date of payment]),
        'table'[customer] = CurrentCustomer,
        'table'[payment condition] = CurrentPaymentCondition,
        NOT ISBLANK('table'[date of payment])
    )
-- 根据最近付款日期,获取对应的延迟天数
VAR LastDelayDays = 
    CALCULATE(
        MAX('table'[delay days]),
        'table'[customer] = CurrentCustomer,
        'table'[payment condition] = CurrentPaymentCondition,
        'table'[date of payment] = LastPaidDate
    )
-- 仅对未结清记录返回结果,已结清记录返回空
RETURN
    IF(ISBLANK(MAX('table'[date of payment])), LastDelayDays, BLANK())
代码说明
  • 通过LastPaidDate变量锁定同客户同条件下的最近已结清付款日期,确保取到的是「上一次」的付款记录
  • 基于该日期匹配对应的延迟天数,避免了原代码取最大延迟值的错误
  • 最后通过IF判断仅对未结清记录返回结果,已结清记录留空,精准匹配需求场景

如果你的「未结清记录」是通过其他字段判断(比如有is_settled布尔字段),只需把ISBLANK(MAX('table'[date of payment]))替换为对应的判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 12:03:18