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 ) )
度量值逻辑解析
- CurrentDate:捕获表格视觉对象当前行的日期(来自基础日期表)
- CurrentSKU:捕获表格视觉对象当前行的SKU(来自SKU维度表)
- LatestPriceDate:筛选出当前SKU在
CurrentDate及之前,最后一条有非空采购价格的记录日期 - 返回结果:根据筛选出的最新日期,提取对应的采购价格(使用
VALUES确保返回单个值,若同一SKU同一日期有多条价格记录,可替换为AVERAGE/SUM等聚合函数,适配业务需求)
原写法问题分析
- 第一种写法
lastnonblankvalue(Table[Date], [PurPrice]):迭代对象错误,应针对采购价格历史表的日期而非基础日期表的所有日期,且未限定SKU上下文,导致无法精准匹配每个SKU的价格变更记录 - 第二种写法:
MAX(Table[Date])取的是整个表的最大日期,而非当前行日期之前的有效日期,所有行都会显示全局最后一次价格,不符合按日期展示最新价格的需求 - 第三种写法:未限定SKU和日期范围,筛选逻辑仅针对全局最大日期,无法实现逐行日期对应的最新价格匹配
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

