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

如何用KQL查询列名含IP的表中近90天IP值含192的数据

KQL 需求实现方案

该需求可以实现,你编写的原始语句不符合KQL语法规范:where子句不支持直接用*IP*通配符匹配字段名进行值过滤,可通过动态对象处理函数完成需求,正确写法如下:

union *
// 优先过滤时间,减少后续计算的数据量
| where TimeGenerated > ago(90d)
// 将当前行所有字段打包为动态字典对象
| extend all_cols = bag_pack_all()
// 提取所有字段名中包含"IP"的字段列表
| extend ip_field_list = array_filter(bag_keys(all_cols), (field_name) => field_name contains "IP")
// 判断任意一个IP字段的取值是否包含"192"
| where array_any(ip_field_list, (field) => tostring(all_cols[field]) contains "192")
// 可选:移除查询过程中生成的辅助字段,只保留原始表字段
| project-away all_cols, ip_field_list

优化注意事项

  • 跨全表查询(union *)配合90天的时间范围查询性能通常较差,如果你清楚目标数据所属的表,建议直接指定表名列表,例如改为union WafLog, VmFlowLog,能大幅提升查询效率
  • 部分自定义上报的表可能没有TimeGenerated字段,遇到报错可以调整为union withsource=TableName * | where isnotempty(TimeGenerated)过滤掉无时间字段的表
  • 如果要避免误匹配到字段值中其他位置的192字符,可以将contains "192"调整为startswith "192.",只匹配192开头的IPv4网段

内容的提问来源于stack exchange,提问作者G. Micskei

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.19 00:06:04