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

如何在Azure Log Analytics中用KQL拆分列值生成自定义列

问题描述

我已在Azure Function Cloud App中部署Azure Function App,并创建诊断设置将所有日志发送至Log Analytics工作区。通过以下查询可获取目标日志:

FunctionAppLogs 
| where FunctionName contains "Function2"

查询结果的Message列格式如下:

user-service URL is healthy. Status code: [{"message":"Success","status":200}
audit-service URL is healthy. Status code: [{"message":"Success","status":200}

我需要拆分Message列,提取出user-service、audit-service这类值作为自定义列ServiceName,但尝试以下查询未成功:

FunctionAppLogs 
| where FunctionName contains "Function2"
| extend ServiceName = split(Message, "%-service", 20)
解决方案

可以通过两种可靠方式实现需求:

方法1:使用split函数拆分取首元素

利用空格作为分隔符拆分Message,取第一个元素即可得到目标服务名称:

FunctionAppLogs 
| where FunctionName contains "Function2"
| extend ServiceName = split(Message, " ", 2)[0]
  • 说明:split(Message, " ", 2)会将字符串最多拆分1次,得到两部分内容,[0]取拆分后的第一个元素,正好是user-service或audit-service。

方法2:使用extract函数正则匹配(更精准)

如果日志格式可能存在变化,用正则匹配更稳定,直接提取符合xxx-service格式的内容:

FunctionAppLogs 
| where FunctionName contains "Function2"
| extend ServiceName = extract(@"(\w+-service)", 1, Message)
  • 说明:正则(\w+-service)会匹配由字母/数字/下划线加-service组成的字符串,1表示提取第一个捕获组的内容,精准定位目标服务名称。
原查询失败原因

你之前的split函数使用了错误的分隔符%-service,这个字符串在Message中并不存在,因此拆分结果不符合预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 09:42:51