Kusto中去重:重复记录保留非空column4值的实现方法
Kusto表去重解决方案
问题分析
需求是按column1、column2、column3的组合去重:
- 若组合存在多条记录,仅保留
column4非空的那条 - 若组合唯一且
column4为空,保留该记录
原语句的问题在于全局排序后使用row_number,无法精准按组合分组处理空值优先级,导致结果错误。
修正后的KQL语句
推荐两种实现方式:
方式一:使用partition by分组处理
tbl | extend has_non_empty_col4 = column4 != "" | partition by column1, column2, column3 ( sort by has_non_empty_col4 desc, column4 | take 1 )
方式二:使用row_number()窗口函数
tbl | extend rn = row_number() over ( partition by column1, column2, column3 order by iif(isempty(column4), 0, 1) desc ) | where rn == 1 | project-away rn
原理说明
- 两种方式均先按
column1、column2、column3的组合分组 - 分组内优先将
column4非空的记录排到前面 - 最终取每组的第一条记录,满足去重需求
预期结果
执行后将得到如下数据:
| column1 | column2 | column3 | column4 |
|---|---|---|---|
| 1234 | business | orange | paypal |
| 3456 | business | apple | |
| 4845 | business | banana | venmo |
内容的提问来源于stack exchange,提问作者SusanD
相关产品推荐
相关产品推荐

