使用 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
我有一个 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