0

我正在尝试编写一个 Kusto 查询来查找在由另一列分组的列中具有最大值但还需要第三(剩余)列的记录。

假设有三列 A(timestamp) B(impvalue: number) 和 C (anothervalue:string)。我还需要获取按 C 分组的记录,其中包含最大时间戳及其相应的 B 列。

在 Sql 中,我很清楚如何使用自连接来完成。我是 Kusto 的新手,我尝试了一些与 summarise、join 和 top 运算符的组合,但无法使其工作。

例子:

在此处输入图像描述

输出:

在此处输入图像描述

4

2 回答 2

3

您可以使用arg_max()聚合函数:https ://docs.microsoft.com/en-us/azure/data-explorer/kusto/query/arg-max-aggfunction 。

例如:

datatable(A:datetime, B:long, C:string)
[
    datetime(2020-08-20 12:00:00), 50,  "abc",
    datetime(2020-08-20 12:10:00), 30,  "abc",
    datetime(2020-08-20 12:05:00), 100, "abc",
    datetime(2020-08-20 12:00:00), 40,  "def",
    datetime(2020-08-20 12:05:00), 120, "def",
    datetime(2020-08-20 12:10:00), 80,  "def",
]
| summarize arg_max(A, *) by C
C 一个
美国广播公司 2020-08-20 12:10:00.0000000 30
定义 2020-08-20 12:10:00.0000000 80
于 2021-08-24T21:04:58.723 回答
-1

这不是最优雅的解决方案,但它有效:

let X = datatable (a: string, b: int, c: string) [
"8/24/2021, 12:40:00.042 PM", 50, "abc",
"8/24/2021, 12:40:10.042 PM", 30, "abc",
"8/24/2021, 12:40:05.042 PM", 100, "abc",
"8/24/2021, 12:40:00.042 PM", 40, "def",
"8/24/2021, 12:40:05.042 PM", 120, "def",
"8/24/2021, 12:40:10.042 PM", 80, "def"
];
X
| summarize Answer = max(a)
| join X on $left.Answer == $right.a
| project a,b,c
于 2021-08-24T17:57:02.603 回答