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

Power BI中DAX实现日期表格视觉对象最新非空值查询求助

实现Power BI表格中按日期显示SKU最新非空采购价格

前提说明

假设模型已建立正确关系:

  • 基础日期表[Date] 与 采购价格历史表[采购日期] 建立日期关联
  • SKU维度表[SKU] 与 采购价格历史表[SKU] 建立SKU关联

正确DAX度量值

最新采购价格 = 
VAR CurrentDate = MAX('基础日期表'[Date])
VAR CurrentSKU = MAX('SKU维度表'[SKU])
VAR LatestPriceDate = 
    CALCULATE(
        MAX('采购价格历史表'[采购日期]),
        FILTER(
            ALL('采购价格历史表'),
            '采购价格历史表'[SKU] = CurrentSKU
                && '采购价格历史表'[采购日期] <= CurrentDate
                && NOT(ISBLANK('采购价格历史表'[采购价格]))
        )
    )
RETURN
    CALCULATE(
        VALUES('采购价格历史表'[采购价格]),
        FILTER(
            ALL('采购价格历史表'),
            '采购价格历史表'[SKU] = CurrentSKU
                && '采购价格历史表'[采购日期] = LatestPriceDate
        )
    )

度量值逻辑解析

  1. CurrentDate:捕获表格视觉对象当前行的日期(来自基础日期表)
  2. CurrentSKU:捕获表格视觉对象当前行的SKU(来自SKU维度表)
  3. LatestPriceDate:筛选出当前SKU在CurrentDate及之前,最后一条有非空采购价格的记录日期
  4. 返回结果:根据筛选出的最新日期,提取对应的采购价格(使用VALUES确保返回单个值,若同一SKU同一日期有多条价格记录,可替换为AVERAGE/SUM等聚合函数,适配业务需求)

原写法问题分析

  • 第一种写法lastnonblankvalue(Table[Date], [PurPrice]):迭代对象错误,应针对采购价格历史表的日期而非基础日期表的所有日期,且未限定SKU上下文,导致无法精准匹配每个SKU的价格变更记录
  • 第二种写法:MAX(Table[Date])取的是整个表的最大日期,而非当前行日期之前的有效日期,所有行都会显示全局最后一次价格,不符合按日期展示最新价格的需求
  • 第三种写法:未限定SKU和日期范围,筛选逻辑仅针对全局最大日期,无法实现逐行日期对应的最新价格匹配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 16:39:21