使用 Kusto 获取每个组的前 1 行

Get top 1 row of each group using Kusto

我有一个 table,我想使用 Kusto 查询语言获取每个组的最新条目。这是 table:

文档状态日志

ID DocumentID Status DateCreated
2 1 S1 7/29/2011
3 1 S2 7/30/2011
6 1 S1 8/02/2011
1 2 S1 7/28/2011
4 2 S2 7/30/2011
5 2 S3 8/01/2011
6 3 S1 8/02/2011

table 将按 DocumentID 分组并按 DateCreated 降序排序。对于每个 DocumentID,我想获取最新状态。

我的首选输出:

DocumentID Status DateCreated
1 S1 8/02/2011
2 S3 8/01/2011
3 S1 8/02/2011

有什么方法可以使用 KQL 只从每个组中获取顶部?

GetOnlyTheTop伪代码如下:

SELECT
  DocumentID,
  GetOnlyTheTop(Status),
  GetOnlyTheTop(DateCreated)
FROM DocumentStatusLogs
GROUP BY DocumentID
ORDER BY DateCreated DESC

来源:问题改编自 DPP 的 SQL 问题:Get top 1 row of each group

您可以使用 partition operator, or the arg_max() aggregation function.

例如:

DocumentStatusLogs
| partition by DocumentId
(
    top 1 by DateCreated desc
) 

DocumentStatusLogs
| summarize arg_max(DateCreated, *) by DocumentId