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

如何让KQL的bag_unpack函数输出单行而非多行(无需显式聚合)

解决方法

要实现将每个安全警报(SecurityAlert)的实体信息输出为单行,同时无需显式指定列名,可以通过mv-apply配合动态列汇总来完成,替代原查询中先mv-expand再bag_unpack的方式。具体查询语句如下:

SecurityAlert
| where TimeGenerated > ago(1d)
| extend Entities = parse_json(Entities)
| mv-apply Entity = Entities on (
    evaluate bag_unpack(Entity, OutputColumnPrefix='Entities_')
    | summarize across (column_names() where column startswith "Entities_") by SystemAlertId: toscalar(SystemAlertId)
)

核心步骤:

  • 解析Entities字段:先将Entities字段解析为动态数组,确保后续能正确遍历每个实体对象。
  • 遍历并拆包实体:用mv-apply逐个处理数组中的每个实体(Entity),通过bag_unpack将实体的键值对展开为带前缀的列(比如Entities_AccountName)。
  • 动态汇总为单行:利用summarize across语法,自动收集所有以Entities_开头的列的所有值为数组,按警报唯一标识SystemAlertId分组,最终每个原始警报对应一行结果,每个实体属性列以数组形式包含该警报下所有实体的对应值。

这种方式无需提前预知实体的列名,完全动态处理所有可能的实体属性,同时保证每个警报的结果在单行展示。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 09:13:12