如何通过KQL将ADX中转为long的特定格式时间戳转成datetime
将ADX中的特殊格式时间戳转换为datetime类型
假设你的表名为YourTable,存储时间戳的列名为TimestampLong(摄入时转为long类型,显示格式为['8_27_2023 11_00']),可以通过以下KQL方案完成转换:
方法一:分步替换+指定格式解析
YourTable // 提取数组字符串中的核心时间文本 | extend CleanTimeStr = extract(@"^\['([^\]]+)\]$", 1, tostring(TimestampLong)) // 替换下划线为日期/时间标准分隔符 | extend FormattedTimeStr = replace_string(replace_string(CleanTimeStr, "_", "/", 2), "_", ":") // 按指定格式转换为datetime类型 | extend TargetDatetime = datetime_parse(FormattedTimeStr, 'M/d/yyyy HH:mm')
方法二:正则一次性替换+转换
这种方式更简洁,通过正则匹配直接替换所有分隔符:
YourTable | extend CleanTimeStr = extract(@"^\['([^\]]+)\]$", 1, tostring(TimestampLong)) | extend FormattedTimeStr = replace(@"(^\d+)_(\d+)_(\d+)\s+(\d+)_(\d+)", @"$1/$2/$3 $4:$5", CleanTimeStr) | extend TargetDatetime = todatetime(FormattedTimeStr)
关键步骤说明
- 提取核心文本:用
extract函数配合正则表达式,从['xxx']格式的字符串中提取出8_27_2023 11_00这类纯时间文本。 - 替换分隔符:将日期部分的下划线
_替换为/,时间部分的下划线替换为:,转换成KQL可识别的时间格式。 - 转换为datetime:使用
datetime_parse(指定格式避免自动解析歧义)或todatetime函数完成类型转换。
内容的提问来源于stack exchange,提问作者AdiK
相关产品推荐
相关产品推荐

