如何在 Kusto 查询语言中使用带有“!包含”的 where 子句中存储在 'let' 中的标量

How to use s skalar stored in 'let' in a where clause with '!contains' in Kusto Query Language

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

我想让这个脚本适用于最新的应用程序版本和第二个最新的应用程序版本。

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

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