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

QuestDB中LATEST_ON语法是什么?用法及适用场景说明

QuestDB LATEST_ON 语法:用法与适用场景

基本定义

LATEST_ON是QuestDB专为时序数据优化的聚合函数,核心作用是基于指定时间列,获取该列最新时刻对应的目标列值。如果配合GROUP BY使用,则会返回每个分组内最新时间点的目标列值。

语法格式

LATEST_ON(time_column, target_column)
  • time_column:必须是TIMESTAMP类型的列,作为判断"最新"的时间基准
  • target_column:需要获取对应值的列,支持数值、字符串等任意数据类型

实际示例

假设我们有一张物联网设备数据表sensor_data,结构及数据如下:

device_idtimestamptemperaturehumidity
12024-05-20 10:00:0023.545
12024-05-20 10:05:0023.744
22024-05-20 10:02:0025.150
22024-05-20 10:06:0025.349

示例1:获取全局最新传感器数据

SELECT 
  LATEST_ON(timestamp, temperature) AS latest_global_temp,
  LATEST_ON(timestamp, humidity) AS latest_global_hum
FROM sensor_data;

返回结果:

latest_global_templatest_global_hum
25.349

示例2:按设备分组获取各设备最新数据

SELECT 
  device_id,
  LATEST_ON(timestamp, temperature) AS latest_temp,
  LATEST_ON(timestamp, humidity) AS latest_hum
FROM sensor_data
GROUP BY device_id;

返回结果:

device_idlatest_templatest_hum
123.744
225.349

适用场景

  • 实时设备监控:快速获取物联网设备、服务器等的最新状态(如当前温度、CPU使用率),无需编写复杂的子查询或窗口函数,性能远优于传统的ORDER BY timestamp DESC LIMIT 1或ROW_NUMBER()方案,因为QuestDB对时序存储做了原生优化。
  • 仪表盘指标展示:用于展示多维度的最新业务指标,比如不同区域的实时销售额、不同门店的最新客流量,分组后用LATEST_ON能高效聚合出结果。
  • 时序数据快照获取:需要获取全量数据或特定分组的最新状态快照时,LATEST_ON语法简洁,执行效率更高,尤其适合按时间分区的时序表(如PARTITION BY DAY),此时函数会优先扫描最新分区,进一步提升速度。

注意事项

  • 如果同一时间点存在多条记录,LATEST_ON会返回该时间戳下最后插入的那条记录对应的目标列值。
  • 为了最大化性能,建议将表设置为按时间分区,且time_column为表的时序主键(通过TIMESTAMP(timestamp)声明)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 00:40:28