Power BI中用DAX为表1添加最近早日期关联价格的计算列
将新表DAX逻辑转为Table1计算列的方法
核心思路
针对Table1的每一行销售记录,筛选Table2中同商品、生效日期≤销售日期的价格记录,再从中取生效日期最晚的那条价格(即最近且早于销售日期的价格)。
计算列DAX代码
匹配价格 = VAR CurrentItem = 'Table1'[Item] VAR CurrentSaleDate = 'Table1'[SaleDate] VAR ValidPrices = FILTER( 'Table2', 'Table2'[Item] = CurrentItem && 'Table2'[StartDate] <= CurrentSaleDate ) VAR LatestPrice = MAXX( TOPN(1, ValidPrices, 'Table2'[StartDate], DESC), 'Table2'[Price] ) RETURN IF(ISBLANK(LatestPrice), BLANK(), LatestPrice)
代码说明
CurrentItem和CurrentSaleDate:利用DAX行上下文特性,自动获取计算列当前行的商品和销售日期ValidPrices:筛选Table2中符合条件的有效价格记录,排除生效日期晚于销售日期的无效数据LatestPrice:通过TOPN(1, ..., DESC)提取有效记录中生效日期最晚的一条,再用MAXX取出对应的价格值- 最后处理无匹配记录的情况,返回空值避免错误
原新表DAX的修正提示
原代码中DATEDIFF([StartDate],[Posting Date],DAY)存在笔误,[Posting Date]应为[Sale Date],否则逻辑会出现偏差。
内容的提问来源于stack exchange,提问作者bpmccain
相关产品推荐
相关产品推荐

