Kusto查询如何提取字符串第一个方括号内的数字值
结论
优先选择extract()函数实现,是三种方案里最优的选择。
最优方案实现代码
你可以直接在原有查询基础上扩展如下逻辑:
// 原有提取CustomValue的逻辑 | project ID=parse_json(Data).["CustomValue"] // 新增extract提取第一个方括号内的数字 | extend target_number = extract(@'\[(\d+)\]', 1, tostring(ID))
方案对比
extract():专门为单字段正则提取场景设计,仅需一次正则匹配即可拿到目标值,容错性高,只要第一个方括号内是数字就能正常提取,不受后续内容格式变动影响,性能开销最低。split():需要两次拆分字符串+两次数组下标取值,写法冗余,若输入字符串格式不符合预期(无前置[、无对应闭合])容易出现数组越界报错,容错性差,性能低于extract。
示例写法参考(不推荐):| extend target_number = split(split(tostring(ID), '[')[1], ']')[0]parse():适合同一条字符串同时提取多个字段的场景,单字段提取需要额外占位不需要的内容,写法冗余,性能弱于extract。
示例写法参考(不推荐):| parse ID with "[" target_number "]" *
内容的提问来源于stack exchange,提问作者SM04
相关产品推荐
相关产品推荐

