如何在Power Query中按trip_id分组识别stop_sequence最大值行
自定义列表达式方案
根据不同工具场景,对应的实现表达式如下:
SQL 环境
使用窗口函数直接实现,无需额外分组聚合:
stop_sequence = MAX(stop_sequence) OVER (PARTITION BY trip_id)
原理:PARTITION BY trip_id 按行程ID分组,MAX(stop_sequence) OVER() 计算每组内的最大站点顺序值,将当前行的站点顺序与该最大值比较,相等则返回TRUE,否则返回FALSE。
Excel 环境
普通公式(下拉填充生效)
=B2=MAXIFS(B:B,A:A,A2)
动态数组公式(自动溢出全部结果)
=BYROW(A2:A10,LAMBDA(row,B2:B10=MAXIFS(B:B,A:A,row)))
原理:MAXIFS 根据当前行的trip_id筛选出对应组的最大站点顺序,再与当前行的站点顺序做比较。
Power Query 环境
直接自定义列(适合小数据集)
[stop_sequence] = List.Max(Table.SelectRows(#"上一步骤名称", (r) => r[trip_id] = [trip_id])[stop_sequence])
高效分组合并方案(适合大数据集)
- 按
trip_id分组,新增max_stop列存储每组最大站点顺序:Table.Group(#"上一步骤名称", {"trip_id"}, {{"max_stop", each List.Max([stop_sequence]), Int64.Type}}) - 将分组后的表与原表按
trip_id合并 - 添加自定义列:
[stop_sequence] = [max_stop]
内容的提问来源于stack exchange,提问作者Yash
相关产品推荐
相关产品推荐

