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

如何在KQL中通过子查询多条件筛选未确认通知的行?

KQL实现:找出事件中未确认通知的人员

完整查询语句

// 解析通知目标,提取每个NotiId对应的所有接收人pid
let parsed_noti_targets = NotifStages
| extend pid_list = extract_all(@"pid: (\d+)", Targets)
| mv-expand pid = pid_list to typeof(string)
| project NotiId, pid;

// 整理事件与通知的关联及已确认记录
let event_noti_acks = NotifChain
| project EventId, NotiId, AckedBy = tostring(AckedBy);

// 筛选未确认的事件-接收人组合
let unacked_targets = parsed_noti_targets
| join kind=inner event_noti_acks on NotiId
| where isempty(AckedBy) or AckedBy != pid
| project EventId, pid;

// 关联人员表获取姓名并整理结果
unacked_targets
| join kind=inner People on $left.pid == $right.pid
| project EventId, 未确认人员姓名 = name
| distinct EventId, 未确认人员姓名
| sort by EventId

步骤说明

  1. 解析通知目标:使用extract_all正则匹配Targets字段中的所有pid,通过mv-expand将每个pid拆分为单独行,得到每个通知对应的所有接收人。
  2. 整理事件-通知关联:转换AckedBy为字符串类型,统一格式以便后续对比,保留事件ID、通知ID和已确认的pid。
  3. 筛选未确认记录:将通知接收人与事件-通知关联表内连接,筛选出两种未确认场景:一是该事件下的通知无确认记录(AckedBy为空),二是当前接收人未出现在确认列表中,得到事件ID与未确认pid的对应关系。
  4. 关联人员信息:连接People表获取未确认人员的姓名,去重后按事件ID排序输出最终结果。

示例数据执行结果

EventId未确认人员姓名
345Spudz
777Spudz
777Chuckles
298Chuckles

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:57:46