如何使用KQL解析Log Analytics中括号双引号包裹的字符串
原有parse语句仅以左方括号作为匹配截断起点,未覆盖包裹文本的双引号、末尾右方括号匹配规则,因此返回结果会携带"name"]类冗余字符;直接匹配双引号返回空值,是因为KQL中双引号为字符串边界标识,未做转义或包裹处理时会被识别为语法标记而非待匹配字符。以下为两种可直接批量执行的落地方案:
方案1:固定格式精准匹配(性能最优,适配当前所有数据为
["字符串值"]的单值结构)
针对固定格式做全段匹配,无多余计算逻辑,2.8万条数据可毫秒级返回结果:| parse Tags_s with * '["' extracted_tag '"]' *解析完成后
extracted_tag字段即为目标纯文本内容,无方括号、双引号等冗余符号。方案2:原生JSON类型解析(兼容性更强,适配后续字段格式迭代)
Tags_s字段本身为标准JSON数组格式字符串,可直接转换为KQL原生动态类型取值,后续如果字段升级存储多标签值(如["标签1","标签2"])也可直接兼容:| extend extracted_tag = parse_json(Tags_s)[0]后续处理多值标签时,只需追加
| mv-apply extracted_tag on (where isnotempty(extracted_tag))即可将所有标签拆分为多行,无需重写解析逻辑。
异常数据排查:如果运行后存在部分空值,可执行以下语句筛选不符合格式的脏数据单独处理:
| where Tags_s !startswith '["' or Tags_s !endswith '"]'
内容的提问来源于stack exchange,提问作者Hudson Carpenter
相关产品推荐
相关产品推荐

