Sha*_*hop 11 kql azure-data-explorer
假设我在Azure 数据资源管理器中有一个如下所示的表:
let data = datatable(id:int, dateTime:datetime)
[
1,"2021-03-03",
1,"2021-03-04",
1,"2021-03-12",
2,"2021-03-04",
2,"2021-03-04",
2,"2021-03-07"
]
Run Code Online (Sandbox Code Playgroud)
我想要一个Kusto 查询语言查询,它将查找每个 id 具有最新日期时间的记录。即,我希望查询返回以下记录:
| ID | 约会时间 |
|---|---|
| 2 | 2021-03-07 00:00:00.0000000 |
| 1 | 2021-03-12 00:00:00.0000000 |
我查看了这个问题,但在这种情况下,操作员只需要一条记录,这是整个表的最大值。我想取回每个id 的最新日期时间的记录。
我怎样才能做到这一点?
(此示例表仅供说明之用,我正在处理的实际数据要大得多,并且具有许多 ID,并且未排序。)
Yon*_*i L 25
我想要一个 Kusto 查询语言查询,它将查找每个 id 具有最新日期时间的记录
如果您只想获取每个 id 的最大日期时间值,您应该使用max()聚合函数:
datatable(id:int, dateTime:datetime, message:string)
[
1,"2021-03-03", "a",
1,"2021-03-04", "b",
1,"2021-03-12", "c",
2,"2021-03-04", "d",
2,"2021-03-04", "e",
2,"2021-03-07", "f"
]
| summarize max(dateTime) by id
Run Code Online (Sandbox Code Playgroud)
| ID | 最大日期时间 |
|---|---|
| 2 | 2021-03-07 00:00:00.0000000 |
| 1 | 2021-03-12 00:00:00.0000000 |
或者,如果您希望保留最大化记录的其他列,您应该使用arg_max()聚合函数:
datatable(id:int, dateTime:datetime, message:string)
[
1,"2021-03-03", "a",
1,"2021-03-04", "b",
1,"2021-03-12", "c",
2,"2021-03-04", "d",
2,"2021-03-04", "e",
2,"2021-03-07", "f"
]
| summarize arg_max(dateTime, *) by id
Run Code Online (Sandbox Code Playgroud)
| ID | 约会时间 | 信息 |
|---|---|---|
| 2 | 2021-03-07 00:00:00.0000000 | F |
| 1 | 2021-03-12 00:00:00.0000000 | C |
| 归档时间: |
|
| 查看次数: |
17798 次 |
| 最近记录: |