如何在Kusto中删除重复行?两种尝试方法均失败求可行方案
解决Kusto删除重复数据的可行方法
针对你遇到的.delete命令无法使用summarize或let变量的问题,以下两种方法可以实现按Key保留最晚摄入记录、删除重复行的需求:
方法一:使用窗口函数直接筛选待删除行
利用row_number()窗口函数对每个Key的记录按摄入时间倒序排序,标记出非第一条(即重复需要删除的)记录:
.delete table TABLENAME records <| TABLENAME | partition by Key | order by ingestion_time() desc | extend row_num = row_number() | where row_num > 1
此方法无需额外临时表,逻辑直接:每个Key下,row_num=1的是最晚摄入的记录,row_num>1的即为需要删除的重复行。
方法二:通过临时表存储保留标识后删除
如果窗口函数方式不符合你的场景,可以先将每个Key对应的最晚摄入时间存储到临时表,再关联删除:
- 创建临时表存储每个Key的最大摄入时间:
.set temp_key_max_ingest <| TABLENAME | summarize MaxIngestionTime = max(ingestion_time()) by Key
- 执行删除操作,关联临时表筛选待删除记录:
.delete table TABLENAME records <| TABLENAME | join kind=inner (temp_key_max_ingest) on Key | where ingestion_time() != MaxIngestionTime
- 操作完成后可删除临时表(可选):
.drop table temp_key_max_ingest
内容的提问来源于stack exchange,提问作者ROODAY
相关产品推荐
相关产品推荐

