如何在Power BI中基于Item No与Location获取最新生效Price
提取每个商品-地点组合的最新生效价格
针对你提到的需求——每个Item No与Location组合仅保留最新Date对应的价格数据,以下是两种在Power BI中可行的解决方案:
方法一:使用Power Query(M语言)处理数据源
这种方法直接在数据加载阶段清洗数据,生成符合要求的结果表:
- 导入销售价格表后,进入编辑查询界面
- 选中表格,点击转换选项卡 → 分组依据
- 在分组依据对话框中设置:
- 选择高级模式
- 添加两个分组列:
Item No(分组依据字段)、Location(分组依据字段) - 添加新列,命名为
LatestRecord,操作选择所有行
- 点击确定后,添加自定义列,输入以下M语言代码:
Table.Max([LatestRecord], "Date") - 展开
LatestRecord列,选择Price和Date字段,删除多余中间列即可得到目标表。
也可以直接用完整M语句替换查询(假设原表名为SalesPriceTable):
let Source = SalesPriceTable, GroupedRows = Table.Group(Source, {"Item No", "Location"}, {{"LatestRecord", each Table.Max(_, "Date"), type record}}), ExpandedLatestRecord = Table.ExpandRecordColumn(GroupedRows, "LatestRecord", {"Price", "Date"}, {"Price", "Date"}) in ExpandedLatestRecord
方法二:使用DAX创建计算表
如果需要在数据模型中直接生成结果表,可通过DAX语句创建计算表:
LatestPriceTable = VAR GroupedMaxDate = SUMMARIZE( SalesPriceTable, SalesPriceTable[Item No], SalesPriceTable[Location], "MaxDate", MAX(SalesPriceTable[Date]) ) RETURN SELECTCOLUMNS( NATURALINNERJOIN(GroupedMaxDate, SalesPriceTable), "Item No", SalesPriceTable[Item No], "Location", SalesPriceTable[Location], "Price", SalesPriceTable[Price], "Date", GroupedMaxDate[MaxDate] )
将代码粘贴到新建计算表编辑框中,替换SalesPriceTable为你的实际表名,即可生成最新价格结果表。
内容的提问来源于stack exchange,提问作者user11889334
相关产品推荐
相关产品推荐

