如何在CnosDB中实现多维时间序列数据查询?
CnosDB多维查询实现指南
基础多维筛选查询
CnosDB兼容标准SQL的多条件筛选逻辑,你可以直接通过WHERE子句组合时间戳、设备ID、传感器类型等条件,用法和传统SQL一致。
假设你的数据表名为sensor_data,包含字段:time(时间戳)、device_id(设备ID,标签字段)、sensor_type(传感器类型,标签字段)、value(传感器读数),以下是查询示例:
-- 查询指定时间范围、特定设备及传感器类型的原始数据 SELECT time, device_id, sensor_type, value FROM sensor_data WHERE time >= '2024-01-01 00:00:00' AND time <= '2024-01-02 00:00:00' AND device_id IN ('device_001', 'device_002') AND sensor_type = 'temperature';
多维聚合查询
如果需要基于多维度(设备ID、传感器类型)进行聚合计算,可以结合GROUP BY子句,搭配时间窗口函数实现时序聚合:
-- 按10分钟时间窗口、设备ID、传感器类型分组,计算平均/最大读数 SELECT DATE_BIN(INTERVAL '10 minutes', time, '1970-01-01T00:00:00Z') AS interval_start, device_id, sensor_type, AVG(value) AS avg_value, MAX(value) AS max_value FROM sensor_data WHERE time >= '2024-01-01 00:00:00' AND time <= '2024-01-01 12:00:00' GROUP BY interval_start, device_id, sensor_type ORDER BY interval_start, device_id, sensor_type;
关键注意事项
- 时间范围查询:推荐使用
>=/<=或BETWEEN指定区间,CnosDB对时间字段的索引优化能大幅提升查询效率 - 标签字段筛选:
device_id、sensor_type这类标签字段(创建表时指定为TAG)的筛选性能远高于普通字段,建议将常用筛选维度设为标签 - 聚合规则:所有非聚合函数的字段(如
device_id、sensor_type、时间窗口字段)必须包含在GROUP BY子句中
内容的提问来源于stack exchange,提问作者cosmic
相关产品推荐
相关产品推荐

