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

按ORDER_LINE_RELEASE_NO分组提取首末次日期及数量的DAX实现问题

问题分析与解决方案

你的问题核心有两点:

  • 数量列的计算未限定分组上下文,导致无法正确提取当前ORDER_LINE_RELEASE_NO分组内的数值
  • FIRSTNONBLANK/LASTNONBLANK依赖列的存储顺序,而非你需要的日期排序逻辑,可能导致取数不符合预期

修正后的DAX代码

PURCH_ORD_LINE_UNIQUE =
ADDCOLUMNS (
    DISTINCT ( PURCH_ORD_LINE_ARCH[ORDER_LINE_RELEASE_NO] ),
    "FIRST_DATE",
        CALCULATE (
            MIN ( PURCH_ORD_LINE_ARCH[WANTED_DATE_NEW] ),
            ALLEXCEPT ( PURCH_ORD_LINE_ARCH, PURCH_ORD_LINE_ARCH[ORDER_LINE_RELEASE_NO] )
        ),
    "LAST_DATE",
        CALCULATE (
            MAX ( PURCH_ORD_LINE_ARCH[WANTED_DATE_NEW] ),
            ALLEXCEPT ( PURCH_ORD_LINE_ARCH, PURCH_ORD_LINE_ARCH[ORDER_LINE_RELEASE_NO] )
        ),
    "ORIGINAL_QTY",
        CALCULATE (
            SELECTCOLUMNS (
                TOPN (
                    1,
                    PURCH_ORD_LINE_ARCH,
                    PURCH_ORD_LINE_ARCH[WANTED_DATE_NEW], ASC
                ),
                "@Qty", PURCH_ORD_LINE_ARCH[BUY_QTY_DUE_NEW]
            ),
            ALLEXCEPT ( PURCH_ORD_LINE_ARCH, PURCH_ORD_LINE_ARCH[ORDER_LINE_RELEASE_NO] )
        ),
    "LAST_WANTED_QTY",
        CALCULATE (
            SELECTCOLUMNS (
                TOPN (
                    1,
                    PURCH_ORD_LINE_ARCH,
                    PURCH_ORD_LINE_ARCH[WANTED_DATE_NEW], DESC
                ),
                "@Qty", PURCH_ORD_LINE_ARCH[BUY_QTY_DUE_NEW]
            ),
            ALLEXCEPT ( PURCH_ORD_LINE_ARCH, PURCH_ORD_LINE_ARCH[ORDER_LINE_RELEASE_NO] )
        )
)

关键改动说明

  • 日期部分替换为MIN/MAX函数:比FIRSTNONBLANK更简洁,明确取分组内的最早/最晚日期,逻辑更清晰
  • 数量部分使用TOPN+SELECTCOLUMNS:通过指定按WANTED_DATE_NEW排序,确保取到对应日期顺序下的首个/最后一个数量值,避免存储顺序带来的误差
  • 所有CALCULATE都添加ALLEXCEPT限定:确保计算上下文仅包含当前ORDER_LINE_RELEASE_NO分组内的数据,这是你之前数量列取数错误的核心原因

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:40:21