如何简化向dynamic对象添加值的操作?已用bag_merge求更优解
更简便的KQL动态对象字段添加方法
方法1:直接在原对象上合并(无需额外变量)
不用单独创建data2对象,直接在extend里把新字段打包后和原data合并,一步搞定:datatable (atime:datetime, d1:string) ["1/1/2025", "free"] | extend data = bag_pack("btime", atime, "d2", d1) | extend data = bag_merge(data, bag_pack("ctime", now()))方法2:用
+运算符简化合并
KQL中的dynamic字典类型支持用+直接合并,效果和bag_merge一致,写法更简洁:datatable (atime:datetime, d1:string) ["1/1/2025", "free"] | extend data = bag_pack("btime", atime, "d2", d1) | extend data = data + bag_pack("ctime", now())方法3:一次性打包所有字段(如果初始就确定所有字段)
如果新增字段不需要依赖后续计算逻辑,可以在第一次bag_pack时就包含所有要添加的字段,省去后续合并步骤:datatable (atime:datetime, d1:string) ["1/1/2025", "free"] | extend data = bag_pack("btime", atime, "d2", d1, "ctime", now())
你之前尝试的extend | data.newColumn = "asdf"写法在KQL里行不通,因为KQL不支持直接通过.语法修改dynamic对象的字段,必须通过合并新键值对的方式实现。
内容的提问来源于stack exchange,提问作者Crayn
相关产品推荐
相关产品推荐

