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

Power BI中基于列重复值计算日期差的DAX公式实现

在Power BI中用DAX实现重复值列对应的日期差计算

当然可以实现,以下是几种针对不同需求的DAX方案,均保留所有原始行:

1. 计算当前日期与同客户最早交付日期的天数差

这个公式会给每个客户的每一行,计算当前交付日期和该客户最早交付日期的差值,负数表示当前日期比最早日期更早,正数则更晚:

日期与最早日期差 = 
VAR 客户最早日期 = CALCULATE(MIN('你的表名'[交付日期]), ALLEXCEPT('你的表名', '你的表名'[客户编号]))
RETURN DATEDIFF(客户最早日期, '你的表名'[交付日期], DAY)
  • ALLEXCEPT 用于锁定当前行的客户编号上下文,只计算该客户的最早交付日期
  • DATEDIFF 的参数顺序决定结果正负:第一个参数是基准日期(最早日期),第二个是当前日期,结果为正代表当前日期更晚,负则更早

2. 计算当前日期与同客户最晚交付日期的天数差

如果需要对比同客户的最晚交付日期,用这个公式:

日期与最晚日期差 = 
VAR 客户最晚日期 = CALCULATE(MAX('你的表名'[交付日期]), ALLEXCEPT('你的表名', '你的表名'[客户编号]))
RETURN DATEDIFF('你的表名'[交付日期], 客户最晚日期, DAY)

这里DATEDIFF把当前日期放在前面,结果为正表示当前日期比最晚日期更早,负则更晚,符合你对正负的定义。

3. 计算当前日期与同客户上一个日期的天数差(多重复行场景)

如果客户有多个交付日期,需要按日期顺序计算相邻日期的差值,用这个公式:

与上一日期天数差 = 
VAR 当前客户 = '你的表名'[客户编号]
VAR 当前日期 = '你的表名'[交付日期]
VAR 上一日期 = CALCULATE(MAX('你的表名'[交付日期]), 
    FILTER('你的表名', 
        '你的表名'[客户编号] = 当前客户 && '你的表名'[交付日期] < 当前日期
    )
)
RETURN IF(NOT(ISBLANK(上一日期)), DATEDIFF(上一日期, 当前日期, DAY), BLANK())
  • 这个公式会找到当前客户中比当前日期更早的最大日期(即上一个交付日期),计算两者的天数差
  • 对于客户的最早日期,因为没有更早的日期,会返回空白值

使用时只需要把公式里的你的表名替换成你实际的表名称即可,所有方案都不会删除任何原始行,只会在新增列中填充计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 19:12:39