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

Kusto查询如何定义字典获取键值,实现路径层级匹配参数关联管理

解决方案

实现方式1:单组匹配参数封装(最贴合需求)

直接将索引和目标层级名封装到同一个dynamic对象中,修改参数时仅需修改这一处,完全避免漏改问题:

// 仅需修改此处配置即可切换匹配的层级和对应值
let levelMatch = dynamic({
    "index": 1, // 路径层级对应索引,第二层级为1,第三层级为2
    "targetValue": "L2" // 对应层级要匹配的目标值
});
TableA
| extend PathSeperated = split(Path, "\\")
| where PathSeperated[toint(levelMatch.index)] == levelMatch.targetValue

实现方式2:键值对字典实现

如果你需要使用标准的键值对字典结构,正确的定义和访问方式如下:

  1. 字典定义需要使用JSON对象格式,用{}包裹键值对
  2. 数字开头的键不能用.语法访问,需使用['键名']的索引方式取值
// 定义键为层级索引字符串,值为目标匹配值的字典
let mapping = dynamic({"1":"L2"});
TableA
| extend PathSeperated = split(Path, "\\")
// 提取字典的第一个键作为索引,第一个值作为匹配目标
| where PathSeperated[toint(bag_keys(mapping)[0])] == bag_values(mapping)[0]

实现方式3:多组层级匹配映射

如果需要同时匹配多个层级规则,可以定义映射数组,配合mv-expand使用:

let mappingList = dynamic([
    {"index":1, "value":"L2"}, // 匹配第二层级为L2
    {"index":2, "value":"L3"}  // 匹配第三层级为L3
]);
TableA
| extend PathSeperated = split(Path, "\\")
| mv-expand mappingList
| where PathSeperated[toint(mappingList.index)] == mappingList.value

注意事项

你之前的let mapping = dynamic("1", "L2");写法不符合Kusto dynamic类型的构造规范,构造字典类型的dynamic变量必须传入合法的JSON对象字符串或结构化JSON表达式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 22:54:04