KQL字符串操作方法:如何从查询输出结果中仅提取UserName字段
KQL提取动态数组内指定字段方法
你当前查询返回的LoggedOnUsers是动态类型的JSON数组,要从中仅提取UserName字段,只需在原有查询基础上补充两步操作即可:
- 用
mv-expand操作符展开数组,把数组内的每个用户对象拆分为独立行 - 提取展开后对象的
UserName属性作为最终输出字段
修改后的通用查询(适配单/多登录用户场景)
DeviceInfo | where DeviceID == "hksjdfhksdf" | project LoggedOnUsers | mv-expand LoggedOnUsers | project UserName = LoggedOnUsers.UserName
输出效果
针对你给出的示例返回数据,执行上述查询后会得到仅包含UserName的结果:
| UserName |
|---|
| djlskjfdl |
如果对应设备存在多个登录用户,查询会逐行输出所有用户的UserName值。如果需要同时保留设备名称,把第二步的project LoggedOnUsers改成project DeviceName, LoggedOnUsers即可。
特殊场景简化写法
如果你能确定每个设备的LoggedOnUsers数组永远只会有1个用户,也可以省略mv-expand步骤,直接通过下标提取:
DeviceInfo | where DeviceID == "hksjdfhksdf" | project UserName = LoggedOnUsers[0].UserName
内容的提问来源于stack exchange,提问作者John418
相关产品推荐
相关产品推荐

