如何用KQL过滤冗余结果?按日期分组处理计数数据需求
可以用KQL实现该需求,以下是具体方案
首先用datatable模拟你的输入数据:
datatable(Type:int, Count:int, Date:string) [ 2, 20, "11-24", 3, 0, "11-24", 4, 0, "11-24", 2, 13, "12-01", 3, 1, "12-01", 4, 0, "12-01", 2, 0, "12-08", 3, 0, "12-08", 4, 0, "12-08" ]
完整处理查询
datatable(Type:int, Count:int, Date:string) [ 2, 20, "11-24", 3, 0, "11-24", 4, 0, "11-24", 2, 13, "12-01", 3, 1, "12-01", 4, 0, "12-01", 2, 0, "12-08", 3, 0, "12-08", 4, 0, "12-08" ] | summarize has_positive = max(Count) > 0 by Date | join kind=inner (_) on Date | where has_positive and Count > 0 or not(has_positive) | extend Type = case(not(has_positive), 5, Type) | summarize arg_max(Type, Count) by Date, has_positive | project Type, Count, Date
步骤解释
- 标记日期组特征:按
Date分组,用summarize生成has_positive字段,标记该日期是否存在Count为正的记录。 - 关联原数据:通过
join将分组标记与原数据关联,让每条记录都携带所属日期组的特征标记。 - 过滤冗余数据:保留两类记录:① 日期组有正Count且当前记录Count>0;② 日期组全为0的所有记录。
- 调整Type字段:对全0的日期组,统一将Type改为5。
- 去重整理:对全0的日期组,用
summarize arg_max仅保留一行;有正Count的组保留所有符合条件的记录。 - 输出格式化:用
project调整字段顺序,匹配需求的输出结构。
执行后输出结果与你期望的完全一致。
内容的提问来源于stack exchange,提问作者Craig
相关产品推荐
相关产品推荐

