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

如何在KQL中通过Datatable函数将日志ID映射为友好名称?

最优解决方案:使用KQL的lookup操作符

你已经搭建好映射表的基础框架,直接用lookup就能高效完成ID到友好名称的替换,既符合你只维护一份映射的需求,也比逐个写CASE语句简洁得多。

基础实现示例

假设你的Application Insights日志表是requests(请根据实际表名替换),待转换的ID字段叫exId,查询写法如下:

let exMapping = datatable(id: string, company: string)[
    "ex1579", "Microsoft",
    "ex1580", "IBM"
];
requests
| lookup exMapping on $left.exId == $right.id
| project-away id  // 移除映射表的冗余id字段
| project-rename companyName = company  // 可选:给友好名称字段改个更直观的名字
// 可选:如果有ID未匹配到映射,用原ID填充避免空值
| extend companyName = coalesce(companyName, exId)

进阶维护方案(适配频繁变更的映射)

如果映射条目多达数百条且需要经常修改,把映射写在查询里还是麻烦,推荐两种更高效的维护方式:

  • 创建存储函数:把映射表封装成一个函数,后续查询直接调用,修改映射只需要更新函数即可:
    .create function with (folder = "MappingFunctions") getCompanyMapping() {
        datatable(id: string, company: string)[
            "ex1579", "Microsoft",
            "ex1580", "IBM"
            // 后续新增/修改映射直接在这里调整
        ]
    }
    
    查询时直接调用函数:
    requests
    | lookup getCompanyMapping() on $left.exId == $right.id
    | extend companyName = coalesce(company, exId)
    | project-away id, company
    
  • 使用存储表:如果映射数据量极大或者需要多人协作维护,可以把映射数据存在专门的Kusto表(比如CompanyMappings)中,查询时直接关联该表,维护时仅需向表中插入/更新数据即可。

为什么选lookup而非join?

lookup是专门为「左表匹配右表键值」的场景设计的,性能比普通join更优,语法也更简洁,默认只匹配第一条结果,完全适配你替换ID的核心需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 17:40:39