You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将KQL查询结果行聚合为列表(Defender设备用户场景)

合并同一设备的用户记录解决方案

可以通过make_list()或make_set()函数结合summarize运算符实现需求,前者保留重复用户(如果存在),后者自动去重。修改后的KQL查询如下:

// 调用设备信息表
DeviceInfo 
// 通过正则筛选目标设备
| where DeviceName matches regex "md\\d{6}"
// 筛选30天内更新的记录
| where Timestamp > ago(30d)
// 处理用户名大小写问题并过滤空用户列表
| distinct DeviceName, a = tolower(tostring(LoggedOnUsers)) 
| where a != "[]"
// 按设备名分组,合并用户列表
| summarize UserList = make_list(a) by DeviceName
// 可选:将列表格式化为更易读的字符串
| extend UserListStr = strcat("[", strcat_array(UserList, ","), "]")

关键说明

  • summarize ... by DeviceName:按设备名称分组,将同一设备的所有用户记录聚合到一起。
  • make_list(a):将分组后的用户值收集为数组;如果需要去重,替换为make_set(a)即可。
  • 最后一行的extend是可选操作,用于把数组转换为类似[user1,user2,user3]的字符串格式,若直接使用数组格式可省略该行。

原查询缺少分组聚合步骤,导致同一设备的用户分散为多条记录,添加summarize配合聚合函数即可实现合并。

内容的提问来源于stack exchange,提问作者greaman

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 09:45:20