Kusto查询执行报错DateTime与String类型无法执行算术表达式如何解决
报错原因
你遇到的类型不匹配错误由两个语法问题共同导致:
format_datetime()函数返回值为字符串类型,你生成的Time字段是字符串格式,无法直接和now()返回的datetime类型做算术减法facet by运算符会返回多个独立的结果集,不能直接在其后续串接extend、project这类行级处理运算符
修复方案
场景1:不需要拆分结果集,仅需按对应字段分组计算
如果你的需求只是按Time、Status、ID去重分组后计算时间差,直接用summarize by替代facet by,同时保留原始datetime类型的Testtime字段做时间运算即可:
| extend FormattedTime = format_datetime(Testtime,'yyyy-MM-dd h:m:s.fffffff') | summarize by FormattedTime, Status, ID, Testtime | extend minutes = (now() - Testtime)/1m | project minutes, ID | limit 1
注:Kusto中两个datetime类型值相减会得到timespan类型结果,直接除以1m(代表1分钟的时间间隔)就能得到数值类型的分钟数,比除以60的写法更规范
场景2:需要按三个字段拆分独立结果集计算
如果你确实需要对每个分组的子集单独做运算,用partition by替代facet by即可:
| extend FormattedTime = format_datetime(Testtime,'yyyy-MM-dd h:m:s.fffffff') | partition by FormattedTime, Status, ID { extend minutes = (now() - Testtime)/1m | project minutes, ID | limit 1 }
内容的提问来源于stack exchange,提问作者Milo_Dev
相关产品推荐
相关产品推荐

