gpt4 book ai didi

azure - KQL Azure Log Analytics 无法从正则表达式解析日期时间

转载 作者:行者123 更新时间:2023-12-03 03:22:57 26 4
gpt4 key购买 nike

给定一个包含“RawData”列和“_ResourceId”(Azure ARM ID)列的表,我想从服务器日志文件中解析一个字符串,例如:

"09:08:52,198 INFO [web.org.perfmon4j.extras.jbossweb7.P....."

并将部分字符串拉入我的自定义表中以供以后分析。

Azure Log Analytics 编辑器中的 Kusto KQL 查询:

suggest_CL
| project dt = todatetime(extract("^([\\:0-9]+)\\,([0-9]+)", 1,
"09:08:52,198 INFO [web.org.perfmon4j.extras.jbossweb7.P")),
dtstr = extract("^([\\:0-9]+)\\,([0-9]+)", 1,
"09:08:52,198 INFO [web.org.perfmon4j.extras.jbossweb7.P"),
statictimestr = "09:09:52",
statictime = todatetime("09:09:52"),
_ResourceId, RawData

哪里suggest_CL是自定义表

dtstr列显示正则表达式有效并返回正确的时间值。

我包括一些测试字符串:

statictimestr = "09:09:52",

这是一个简单的仅时间字符串。 doc表示如果不包含日期,它将使用今天的日期。

statictime = todatetime("09:09:52"),

这是上面的字符串转换为 datetime

输出为

<表类=“s-表”><标题>dt [UTC]dtstr静态时间字符串静态时间 [UTC] <正文>09:08:5209:09:522023-06-15T09:09:52Z

dt列为空,表示todatetime(...)表达式求值为 null。 statictime列被标记为 [UTC] ,因此对于字符串文字,仅时间表达式的解析成功。输出isnull(todatetime(...))显示true .

extract(regex) 的输出表达式未正确解析。

另一个SO question回答说格式不正确。这里似乎有更多的问题,比如错误处理函数表达式作为 todatetime() 的参数。 。在另一个问题中表达了这种可能性。

有什么想法吗?

最佳答案

todatetime() 对于常量值和计算值有不同的实现 - 两者不支持同一组格式。官方支持的格式集(对于两者)记录在 here 中。 .

这就是为什么对于不受支持的格式,当您提供常量值时它可能对您有用,但在其他情况下可能不起作用。

对于不支持的格式,您可以尝试的一件事是使用 parse operator 解析单独的日期部分。 ,然后使用 the make_datetime() function从它们中创建一个日期时间值。

例如:

print input = "09:08:52,198 INFO [web.org.perfmon4j.extras.jbossweb7.P....."
| parse input with hours:int ":" minutes:int ":" seconds:double "," *
| extend dt = make_datetime(datetime_part("Year", now()), datetime_part("Month", now()), datetime_part("Day", now()), hours, minutes, seconds)

关于azure - KQL Azure Log Analytics 无法从正则表达式解析日期时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/76486224/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com