如何用KQL从Kusto提取最近15分钟数据及日期函数应用问题
KQL 筛选最近15分钟数据及日期列函数使用问题
关于提取的Date列能否应用日期函数
从RawData提取的Date列初始是字符串类型,必须先转换为datetime类型才能使用KQL的日期时间函数(比如now()、ago()、datetime_diff()等)。直接对字符串调用日期函数会触发语法错误,所以转换类型是前提。
筛选最近15分钟数据的修正方案
你现有代码里的where Date = now(todatetime(Date))存在语法错误,now()不需要参数,且未完成日期类型的正确转换。以下是修正后的完整代码:
UserTable | project DateStr = substring(RawData, 0, 22), RawData | project DateStr, RawData = substring(RawData, 24, 150) | where RawData has "useraccess" // 将字符串日期转为datetime类型;若日期格式非KQL默认识别格式,需用parse_datetime指定格式,比如parse_datetime(DateStr, 'yyyy-MM-dd HH:mm:ss.fff') | extend Date = todatetime(DateStr) // 筛选最近15分钟的数据 | where Date >= ago(15m) // 可选:保留需要的列 | project Date, RawData
关键优化说明
- 可以合并重复的
project步骤简化代码:UserTable | extend DateStr = substring(RawData, 0, 22), TrimmedRawData = substring(RawData, 24, 150) | where TrimmedRawData has "useraccess" | extend Date = todatetime(DateStr) | where Date >= ago(15m) | project Date, TrimmedRawData ago(15m)会返回当前时间往前推15分钟的时间点,用>=可精准筛选出该时间点之后产生的数据。
内容的提问来源于stack exchange,提问作者Aviator
相关产品推荐
相关产品推荐

