在Power BI中跟踪组内车型名称变更并生成最新名称分组列
解决方案:DAX计算列跟踪车型最新名称
假设你的表名为VehicleNameHistory,包含Year、Old_name、New_name字段,以下是创建Naming_group计算列的DAX代码:
Naming_group = VAR CurrentName = [New_name] -- 找到当前名称后续年份的最新变更名称 VAR NextName = MAXX( TOPN( 1, FILTER( 'VehicleNameHistory', 'VehicleNameHistory'[Old_name] = CurrentName && 'VehicleNameHistory'[Year] > [Year] ), 'VehicleNameHistory'[Year], DESC ), 'VehicleNameHistory'[New_name] ) -- 递归查找直到没有后续变更,返回最终的最新名称 RETURN IF( NextName = BLANK(), CurrentName, CALCULATE( [Naming_group], 'VehicleNameHistory'[New_name] = NextName, 'VehicleNameHistory'[Year] > [Year] ) )
代码逻辑说明:
- 递归追踪变更链:从当前行的
New_name出发,持续查找后续年份中以该名称作为Old_name的记录,获取对应的New_name,直到没有后续变更为止,最终返回的就是该车型的最新名称。 - 适配未更名场景:如果车型当年未更名(
Old_name与New_name一致),递归会最终定位到最近的未变更记录,直接返回该名称。 - 小数据集适配:因为你的数据集规模较小,递归计算的性能不会有任何问题。
额外注意事项:
- 确保
Year字段为数值类型(如2020、2021),保证年份比较的准确性。 - 若存在无
Old_name的初始年份记录,无需额外修改代码,初始名称的后续变更会被正常追踪。
内容的提问来源于stack exchange,提问作者Andreas
相关产品推荐
相关产品推荐

