You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ADX Kusto如何通过单查询获取多ID元组的最新行数据

问题答案

完全可以通过单条Kusto查询语句实现该需求,无需为每个设备-遥测元组单独发起查询。

核心实现思路

利用Kusto内置的arg_max聚合函数,按DeviceId和TelemetryId分组后,直接取每组中时间戳最新的完整行记录即可。

参考查询语句

假设存储遥测数据的表名为TelemetryData,查询DeviceId = 1的所有遥测项最新值的语句如下:

TelemetryData
| where DeviceId == 1
| summarize arg_max(TimeStamp, *) by DeviceId, TelemetryId
| sort by TelemetryId asc

语句说明

  • where DeviceId == 1:过滤出目标设备的所有遥测数据,若需要同时查询多个设备,可修改为where DeviceId in (1,2,3)的形式
  • summarize arg_max(TimeStamp, *) by DeviceId, TelemetryId:按设备ID、遥测ID分组,返回每组中TimeStamp值最大(即最新上报)的行的所有字段
  • sort by TelemetryId asc:按遥测ID排序输出,和示例预期格式对齐,非必须项可按需省略

性能优化写法

如果你已经明确知道目标设备关联的TelemetryId集合,可以在分组前增加一层遥测ID过滤,减少数据扫描量提升查询速度,示例如下:

TelemetryData
| where DeviceId == 1
| where TelemetryId in (1,2,3) // 替换为目标设备实际关联的遥测ID集合
| summarize arg_max(TimeStamp, *) by DeviceId, TelemetryId
| sort by TelemetryId asc

上述语句运行在给出的示例数据上时,返回结果和预期结果完全一致。


内容的提问来源于stack exchange,提问作者codefluent

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 23:01:39