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

如何基于JSON实现条件过滤?避免字符串搜索的方案

在Kusto中过滤JSON数组里isDefault=true的条目(避免字符串搜索)

可以用Kusto的mv-expand运算符先将JSON数组拆分为独立记录,再直接通过布尔属性过滤,完全不需要依赖字符串匹配,实现精准筛选。

基础筛选(展开单条记录)

let T = datatable (id: int) [1, 2, 3];
T 
| extend json = dynamic([
    {  "capabilities":"None",  "isDefault":false, "isInitial":false,   "name":"contoso.fr", "type":"Managed"},
    {  "capabilities":"Mail",  "isDefault":true, "isInitial":false,   "name":"login.contoso.com", "type":"Managed"},
    {  "capabilities":"Mail,Office",  "isDefault":false, "isInitial":false,   "name":"contoso.com", "type":"Managed"}
])
| extend data = parse_json(json)
| mv-expand data // 把JSON数组拆成单条记录,每条对应一个数组对象
| where data.isDefault == true // 直接用布尔属性过滤,精准可靠
| project id, data // 保留需要的字段

聚合筛选结果(重新组合为数组)

如果需要把同一id下筛选出的对象重新聚合为JSON数组,可以配合summarize和make_list:

let T = datatable (id: int) [1, 2, 3];
T 
| extend json = dynamic([
    {  "capabilities":"None",  "isDefault":false, "isInitial":false,   "name":"contoso.fr", "type":"Managed"},
    {  "capabilities":"Mail",  "isDefault":true, "isInitial":false,   "name":"login.contoso.com", "type":"Managed"},
    {  "capabilities":"Mail,Office",  "isDefault":false, "isInitial":false,   "name":"contoso.com", "type":"Managed"}
])
| extend data = parse_json(json)
| mv-expand data
| where data.isDefault == true
| summarize filtered_data = make_list(data) by id // 按id聚合筛选后的对象为数组
| project id, filtered_data

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 00:05:14