在Power BI中用DAX编写Measure获取符合日期范围的单价
Power BI 编写Measure获取对应适用单价的方法
实现思路
需要同时匹配产品标识(如product_id)和销售日期的区间归属,从Price表中提取对应生效单价,以下是两种常用实现方式:
方法一:使用LOOKUPVALUE函数(单匹配场景)
如果每个产品的销售日期只会对应唯一一条价格规则,直接用LOOKUPVALUE即可:
适用单价 = LOOKUPVALUE( Price[price], Price[product_id], Sales[product_id], Price[price_start_date], <= Sales[Sales Date], Price[price_end_date], >= Sales[Sales Date] )
提示:如果存在多条符合条件的价格记录,该函数会返回错误,此时推荐使用方法二。
方法二:使用CALCULATE+FILTER(多匹配场景)
若存在价格区间重叠、同一日期多条价格生效的情况,可通过聚合函数指定取值规则(如取最高/最低/最新价格):
适用单价 = CALCULATE( MAX(Price[price]), -- 可替换为MIN、LASTNONBLANK等,按需调整取值规则 FILTER( ALL(Price), Price[product_id] = SELECTEDVALUE(Sales[product_id]) && Price[price_start_date] <= SELECTEDVALUE(Sales[Sales Date]) && Price[price_end_date] >= SELECTEDVALUE(Sales[Sales Date]) ) )
关键注意点
- 确保
Price和Sales表有一致的产品关联字段(如product_id),否则无法精准匹配 - 两张表的日期格式需统一,若存在日期时间格式差异,可使用
DATEVALUE(Sales[Sales Date])转换为纯日期格式后再匹配 - 若价格规则存在重叠,需提前明确业务取值规则,再调整
CALCULATE中的聚合逻辑
内容的提问来源于stack exchange,提问作者Yax
相关产品推荐
相关产品推荐

