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

KQL使用has_any匹配内容后如何获取对应的匹配关键词?

实现方案

你可以通过展开关键词数组+匹配过滤的方式实现新增匹配值列的需求,完整查询逻辑如下:

  1. 首先读取外部CSV的关键词列,生成匹配用的关键词数组:
// 读取外部CSV中的关键词列,替换CSV路径为你的实际地址
let MatchKeywords = externaldata(ColumnName:string)
[@"你的CSV存储路径"]
with(format="csv", ignoreFirstRecord=true) // 如果CSV有表头就保留ignoreFirstRecord参数
| summarize make_list(ColumnName);
  1. 针对Events表做匹配查询,新增匹配值列:
Events
// 注入关键词数组到每行数据
| extend TempKeywords = MatchKeywords
// 展开关键词数组为单行单关键词
| mv-expand TempKeywords to typeof(string)
// 过滤出当前行Title匹配对应关键词的记录
| where Title has TempKeywords
// 可选:如果一行匹配多个关键词,用以下语句把所有匹配值聚合为数组,保证每个EventId只输出一行
| summarize MatchedColumnValue = make_list(TempKeywords), take_any(Title) by EventId
// 输出你需要的列
| project Title, EventId, MatchedColumnValue

适配说明

  • 如果你希望一个事件匹配多个关键词时输出多行,删除上面的summarize行,直接将TempKeywords重命名为MatchedColumnValue即可
  • 如果你只需要取第一个匹配到的关键词,把summarize行替换为| summarize take_any(*) by EventId, Title | project-rename MatchedColumnValue = TempKeywords即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 05:00:00