如何基于指定字段保留Arrow格式数据中KEY值最小的行?
解决方案:在Arrow格式中按分组保留KEY最小的行
问题说明
需基于policynumber、birthdate和status字段分组,保留每组中KEY值最小的行;因数据量极大,必须直接使用Arrow格式处理,避免转换为DataFrame带来的性能损耗。
实现代码
针对你的Arrow Table数据,直接使用Arrow兼容的dplyr语法即可完成需求,代码如下:
data %>% group_by(policynumber, status, birthdate) %>% filter(KEY == min(KEY)) %>% ungroup()
代码解释
group_by(policynumber, status, birthdate):按指定三个字段对Arrow Table进行分组filter(KEY == min(KEY)):在每个分组内筛选出KEY等于该分组最小KEY值的行ungroup():取消分组(可选,若后续无需保留分组状态建议添加)
验证结果
用你提供的测试数据运行上述代码,会得到与DataFrame版本完全一致的结果:
| policynumber | status | birthdate | add | KEY |
|---|---|---|---|---|
| 10 | RMA_TRANSACTION_TYPE_DTH | 1992 | 2 | 1 |
| 10 | RMA_TRANSACTION_TYPE_REN | 1992 | 2 | 1 |
| 5 | RMA_TRANSACTION_TYPE_NEW | 1991 | 4 | 1 |
| 5 | RMA_TRANSACTION_TYPE_REN | 1991 | 5 | 1 |
| 6 | RMA_TRANSACTION_TYPE_REN | 1990 | 6 | 1 |
全程无需转换为DataFrame,可高效处理超大规模数据。
内容的提问来源于stack exchange,提问作者AAA
相关产品推荐
相关产品推荐

