KQL去重问题求助:保留指定优先级的账户记录
KQL实现账户记录去重:优先保留updated_c=true的行
直接用arg_max()函数就能高效实现你的需求,这是Kusto处理这类优先级去重场景的常用方法:
-- 替换成你的实际表名 YourAccountTable | summarize arg_max(updated_c, *) by account_Id
逻辑解释
by account_Id:按账户ID对所有记录分组,确保同一账户的记录被归为一组arg_max(updated_c, *):在每个分组内,选取updated_c值最大的那一行。Kusto中布尔值true等价于数值1,false等价于0,所以true的优先级更高,会被优先保留;如果分组内只有一条记录,不管updated_c是true还是false,都会直接保留该行*:表示保留选中行的所有列,如果你只需要特定列,可以替换成列名列表(比如arg_max(updated_c, account_Id, other_column))
示例验证
针对你给出的测试数据:
| account_Id | updated_c |
|---|---|
| 12 | true |
| 12 | false |
运行脚本后得到的结果:
| account_Id | updated_c |
|---|---|
| 12 | true |
如果再加入一条单独的账户记录:
| account_Id | updated_c |
|---|---|
| 13 | false |
最终输出会保留这条记录,完全符合你的需求。
内容的提问来源于stack exchange,提问作者SusanD
相关产品推荐
相关产品推荐

