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

如何使用KQL验证子对象数组中存在指定属性值且不使用contains关键字

Kusto 精确过滤policies数组方案

核心逻辑

原始数据中的policies字段为JSON序列化字符串,先转换为动态类型后展开数组,通过精确等于匹配筛选符合要求的元素,全程不使用contains关键字。

方案1:展开后返回匹配记录(关联原始字段)

// 请替换为实际表名
YourTable
// 转换字符串格式的policies为动态JSON数组
| extend policies = parse_json(policies)
// 展开数组为单个policy对象
| mv-expand single_policy = policies
// 精确匹配policyDefinitionId,替换为目标值
| where single_policy.policyDefinitionId == "你需要匹配的具体policyDefinitionId值"
// 自定义输出字段,可按需调整
| project 
    eventDataId,
    subscriptionId,
    resourceGroup,
    resourceName = resource,
    matched_policy = single_policy

方案2:保留原始结构,仅过滤policies数组

如果需要保留原对象的所有字段,仅将policies数组替换为仅符合条件的元素,使用mv-apply实现:

YourTable
| extend policies = parse_json(policies)
| mv-apply policy_item = policies on (
    where policy_item.policyDefinitionId == "目标policyDefinitionId值"
    | summarize filtered_policies = make_list(policy_item)
)
// 过滤掉没有匹配项的记录,不需要可删除此行
| where array_length(filtered_policies) > 0
// 替换原policies字段为过滤后的结果
| project-away policies | project-rename policies = filtered_policies

方案3:仅返回匹配的policy元素本身

如果不需要原记录的其他字段,仅要符合条件的policy对象:

YourTable
| extend policies = parse_json(policies)
| mv-expand policies
| where policies.policyDefinitionId == "目标值"
| project policies

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 10:06:03