如何使用Kusto查询语言中带“!contains”的where子句中的“ let”中存储的skalar

问题描述

我有一个困扰我的问题,尽管我认为解决方案必须非常简单。 我必须使用Kusto查询语言为我的Azure Analytics日志分析器指标构建查询

我想使此脚本适用于最新的应用程序版本和第二最新的应用程序版本。

这是获取最新应用程序版本的查询代码

customEvents
| where client_OS contains "Android"
| summarize max(application_Version)

现在我的理解是,我可以将其存储在let中,以后再使用以获取第二个最新的应用程序版本,如下所示:

let latestVersion = customEvents
| where client_OS contains "Android"
| summarize max(application_Version);
customEvents
| where client_OS contains "Android" and application_Version !contains latestVersion
|summarize max(application_Version)

但是不幸的是,编译器不允许我使用带有!contains的skalar。我必须使用一个字符串。 我有什么办法可以用它做字符串,以便我可以使用吗? 或者,您还有其他什么好方法可以从application_Version列中获取第二个最大值? 我是根据我在sql中的操作方式创建的,但是Kusto似乎有点不同。

希望您能帮助我解决此问题并启发我并增强我的Kusto技能。

最好的问候, 小牛

解决方法

latestVersion不是标量。要使其标量化,必须用toscalar(...)包围它。

无论如何,如果您想找到排名前2位的商品,有一种更有效的方法:

customEvents
| where client_OS contains "Android"
| top 2 by application_Version desc

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...