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

Kusto中如何提取子字符串并批量映射替换为友好名称

Kusto位置编码映射友好名称实现方案

字典映射方案可行性

你设想的键值字典匹配方案完全可行,Kusto原生支持dynamic类型的字典结构做键值检索,50组映射的规模对查询性能几乎无影响,实现逻辑简单直接。
核心实现代码如下:

// 定义编码-友好名称映射字典,新增映射直接追加键值对即可
let location_map = dynamic({
    "100A": "纽约",
    "101B": "日内瓦",
    "102C": "法国",
    "103D": "美国",
    "104E": "加拿大"
});
let data = datatable(Timestamp:datetime, Name:string, Value:int)
        [
         datetime(2022-02-18 10:00:00 AM), "AX_100A_A00", 100,
         datetime(2022-02-18 10:01:00 AM), "BX_101B_B00", 200,
         datetime(2022-02-18 10:02:00 AM), "CX_102C_C00", 300,
         datetime(2022-02-18 10:03:00 AM), "DX_103D_D00", 400,  
         datetime(2022-02-18 10:04:00 AM), "EX_104E_E00", 500,
        ];
data
// 提取位置编码,建议用split替代固定位substring,适配前缀长度变化的场景
| extend Floor_Code = split(Name, "_")[1]
// 匹配友好名称,可加兜底逻辑处理未收录的编码
| extend Floor_Name = iif(isnull(location_map[Floor_Code]), Floor_Code, location_map[Floor_Code])
| summarize result = max(Value) by Floor_Name

分场景的优化方案

根据你的映射维护需求,可以选择更适配的实现方式:

  • 映射固定、仅单查询使用:直接用上述动态字典方案即可,写法最简洁,没有额外关联开销。
  • 映射频繁更新、需要多查询复用:建议单独创建位置编码映射维表,存储Floor_Code(位置编码)、Floor_Name(友好名称)两列数据,查询时通过lookup关联即可,不需要每次查询硬编码全量映射,维护成本更低。关联示例代码:
// 维表可独立维护更新,所有查询共用
let location_dim = datatable(Floor_Code:string, Floor_Name:string)
[
    "100A", "纽约",
    "101B", "日内瓦",
    "102C", "法国",
    "103D", "美国",
    "104E", "加拿大"
];
let data = datatable(Timestamp:datetime, Name:string, Value:int)
        [
         datetime(2022-02-18 10:00:00 AM), "AX_100A_A00", 100,
         datetime(2022-02-18 10:01:00 AM), "BX_101B_B00", 200,
         datetime(2022-02-18 10:02:00 AM), "CX_102C_C00", 300,
         datetime(2022-02-18 10:03:00 AM), "DX_103D_D00", 400,  
         datetime(2022-02-18 10:04:00 AM), "EX_104E_E00", 500,
        ];
data
| extend Floor_Code = split(Name, "_")[1]
| lookup kind=leftouter location_dim on Floor_Code
| summarize result = max(Value) by Floor_Name

提取编码时不建议用固定索引的substring(Name,3,4),如果Name字段前缀长度发生变化会导致提取错误,用split(Name, "_")[1]直接按下划线分割取第二段的兼容性更强。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.31 00:27:25