Kusto如何按规则移除storedata表中的部分重复数据行
Kusto 数据表重复值处理方案
需求说明
- 现有Kusto数据表
storedata,需要修正同门店同产品的重复记录,处理逻辑如下:- 若同一门店(Store)下的同一产品(Product)存在2条及以上记录,取该组内出现频次最高的StoreNumber作为最终取值
- 若对应产品没有重复记录,即使其StoreNumber与该门店其他记录的StoreNumber不一致,也保留原值
实现代码
// 样例表定义 let storedata= datatable (Store:string, Product:string ,StoreNumber:string) ["Target", "TargetCheese", "4", "Target", "TargetCheese", "5", "Target", "TargetApple", "5", "Target", "TargetCorn", "5", "Target", "TargetEggs", "5", "Kroger", "KrogerApple", "2", "Kroger", "KrogerCorn", "2", "Kroger", "KrogerEggs", "2", "Safeway", "SafewayApple", "6", "Safeway", "SafewayCorn", "6", "Safeway", "SafewayEggs", "1" ]; // 数据处理逻辑 storedata | summarize StoreNumber = top_hitter(StoreNumber, 1) by Store, Product
逻辑说明
top_hitter()是Kusto内置的聚合函数,专门用于返回分组内出现频次最高的字段值,第二个参数指定返回Top N个结果,这里取Top 1刚好匹配需求:
- 当同门店同产品的分组下有≥2条记录时,自动返回出现次数最多的StoreNumber
- 当分组下只有1条记录时,直接返回该记录的StoreNumber原值,无需额外判断
输出结果
| Store | Product | StoreNumber |
|---|---|---|
| Target | TargetCheese | 5 |
| Target | TargetApple | 5 |
| Target | TargetCorn | 5 |
| Target | TargetEggs | 5 |
| Kroger | KrogerApple | 2 |
| Kroger | KrogerCorn | 2 |
| Kroger | KrogerEggs | 2 |
| Safeway | SafewayApple | 6 |
| Safeway | SafewayCorn | 6 |
| Safeway | SafewayEggs | 1 |
内容的提问来源于stack exchange,提问作者compscistudent22
相关产品推荐
相关产品推荐

