Kusto查询应用版本合规性报错求助:无法比较字符串类型
解决Kusto版本号比较报错问题
你的报错是因为Kusto中直接对字符串类型的版本号做大于等于比较时,既不符合版本号的语义逻辑,还会触发类型校验报错。要正确对比版本号,需用Kusto内置的parse_version()函数将字符串版本转换成可语义化比较的版本类型。
修改后的查询语句
AppInventory_CL | where AppName_s == 'Microsoft Edge' // 原条件里的"* in ('Microsoft Edge')"永远为false,可简化 | summarize arg_max(TimeGenerated, *) by ManagedDeviceID_g, AppName_s, AppPublisher_s | project ComputerName_s, AppName_s, AppVersion_s | extend Versione = iif(parse_version(AppVersion_s) >= parse_version('116.0.0.0'), 'OK', 'KO')
关键说明
parse_version()函数会将点分隔的版本字符串(如116.0.0.0、116.198.117.0)转换成Kusto的版本对象,支持按照版本号的语义(从左到右逐段比较数值)进行大小判断,而非按字符串的字符顺序对比。- 原查询中的
where AppName_s in ('Microsoft Edge') or '*' in ('Microsoft Edge')可简化为where AppName_s == 'Microsoft Edge',因为*不在('Microsoft Edge')集合内,该条件分支永远不会生效。
内容的提问来源于stack exchange,提问作者Alessandro Zola
相关产品推荐
相关产品推荐

