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

如何用DAX筛选各库存最后一笔订单并按条件统计?

用DAX统计各库存最后一笔订单的特定条件指标

要实现每个库存最后一笔订单的条件统计,核心是先精准定位每个库存对应的最后订单,再基于这个范围做条件筛选。你之前用LASTDATE/MAX失败的原因通常是没有限定「每个库存」的上下文,导致函数取的是全局或当前筛选器的最后值,而非单库存维度的最后值。

方法一:用度量值实现(推荐,适合动态筛选场景)

步骤1:定义每个库存的最后订单标识

如果订单日期唯一(无同日多单),用日期作为标识:

每个库存最后订单日期 = 
CALCULATE(
    MAX('订单表'[订单日期]),
    ALLEXCEPT('订单表', '订单表'[库存编码])
)

如果存在同日多单,建议用递增的订单编码作为标识(确保最后订单的编码最大):

每个库存最后订单编码 = 
CALCULATE(
    MAX('订单表'[订单编码]),
    ALLEXCEPT('订单表', '订单表'[库存编码])
)

ALLEXCEPT的作用是清除除「库存编码」外的所有筛选上下文,确保计算的是单个库存维度下的最大日期/编码。

步骤2:基于最后订单做条件统计

比如统计最后订单满足「订单状态=已完成」的库存数量:

最后订单为已完成的库存数 = 
CALCULATE(
    DISTINCTCOUNT('订单表'[库存编码]),
    FILTER(
        '订单表',
        -- 替换为上面定义的标识字段
        '订单表'[订单日期] = [每个库存最后订单日期]
        && '订单表'[订单状态] = "已完成"
    )
)

如果用订单编码作为标识,把条件改成'订单表'[订单编码] = [每个库存最后订单编码]即可。

方法二:用计算列标记最后订单(适合静态统计)

如果不需要动态筛选,可以给每条记录添加「是否为该库存最后订单」的标记:

是否为最后订单 = 
VAR 当前库存 = '订单表'[库存编码]
VAR 库存最后订单日期 = CALCULATE(MAX('订单表'[订单日期]), '订单表'[库存编码] = 当前库存)
RETURN IF('订单表'[订单日期] = 库存最后订单日期, 1, 0)

之后直接用这个计算列筛选统计:

最后订单符合条件计数 = 
CALCULATE(
    COUNT('订单表'[订单编码]),
    '订单表'[是否为最后订单] = 1
    && '订单表'[特定条件列] = "你的条件值"
)

关键注意点

  • 确保「库存编码」是精准的分组维度,避免重复或错误编码导致统计偏差
  • 如果订单存在取消/作废的情况,需要先在筛选中排除这类无效订单,比如在CALCULATE里添加'订单表'[订单状态] <> "作废"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:04:54