KQL parse运算符如何为捕获变量指定自定义正则表达式
这个需求完全可以在KQL中实现。
使用parse运算符的正则模式时,你可以通过字段名:自定义正则规则的语法,为指定字段自定义匹配的正则模式,不需要使用默认的(.*?)匹配逻辑。你需求中要匹配单词字符的正则为\w*,只需要把对应字段的写法调整为_className:@'\w*'即可,加@符是为了避免转义正则中的反斜杠。
修改后的完整查询代码如下:
let Traces = datatable(EventText:string) [ '2021-10-04T20:43:03,174 2511 INFO cd060096-c6c4-4ddf-b9f7-5795f6d04514 c2a42807-6ab3-41bb-8d72-1c48f2213c31 iTKTS Fiona (ABSDEF) () () () ITKTSUtil - <ProductFulfillmentResponse>U2028 <errorStatus>UNPROCESSED</errorStatus>U2028 <errorCode>GEN_ERR</errorCode>U2028 <errorDescription>WARNING - UNPROCESSED DUE TO OTHER ERRORS</errorDescription>U2028 <customerDocuments>U2028 <errorDescription>WARNING - UNPROCESSED DUE TO OTHER ERRORS</errorDescription>U2028 <itemFulfillmentInfos>U2028 <errorDescription>WARNING - UNPROCESSED DUE TO OTHER ERRORS</errorDescription>U2028 </itemFulfillmentInfos>U2028 </customerDocuments>U2028</ProductFulfillmentResponse>U2028' ]; Traces | parse kind = regex EventText with _timestamp ",\\d{3} " _threadid " " _logLevel " " _clientTransactionId " " _appTransactionId " " _appService " " _bigeazy " \\(" _recordLocator "\\) \\(" _status "\\) \\(" _responseTime "\\) \\(" _serviceName "\\) " _className:@'\w+' " - " _message | project _className, _message
执行后即可得到预期结果:
_className字段值为ITKTSUtil_message字段为后续的XML响应内容
内容的提问来源于stack exchange,提问作者Ethan Miller
相关产品推荐
相关产品推荐

