如何在TDengine中执行降采样查询?
在TDengine中执行降采样查询的方法
TDengine中实现降采样核心依赖INTERVAL子句,结合聚合函数将指定时间窗口内的原始数据合并为单条结果。针对你提到的每秒1次采集、每10秒降采样的场景,具体实现如下:
基础降采样查询
假设你的数据表为sensor_data,包含时间戳字段ts TIMESTAMP和采集值字段value FLOAT,执行每10秒的降采样查询(以平均值为例):
SELECT _wstart, AVG(value) FROM sensor_data INTERVAL(10s);
INTERVAL(10s):指定降采样的时间窗口为10秒_wstart:TDengine自动生成的时间窗口起始时间,用于标识每个降采样结果对应的时间段AVG(value):对每个10秒窗口内的value取平均值,你可以根据业务需求替换为其他聚合函数
不同聚合需求的示例
根据业务场景选择合适的聚合函数:
- 取每个10秒窗口的最大值:
SELECT _wstart, MAX(value) FROM sensor_data INTERVAL(10s);
- 取每个10秒窗口的最小值:
SELECT _wstart, MIN(value) FROM sensor_data INTERVAL(10s);
- 统计每个10秒窗口内的数据采集次数:
SELECT _wstart, COUNT(*) FROM sensor_data INTERVAL(10s);
- 取每个10秒窗口内的最后一条数据:
SELECT _wstart, LAST(value) FROM sensor_data INTERVAL(10s);
时间窗口对齐(可选)
如果需要将降采样窗口对齐到固定时间点(比如整点的10秒倍数),可以添加ALIGN子句:
SELECT _wstart, AVG(value) FROM sensor_data INTERVAL(10s) ALIGN(10s);
例如,未对齐时第一个窗口可能从数据起始时间(如12:00:03)开始,对齐后窗口会调整为12:00:00-12:00:10、12:00:10-12:00:20等规整的时间段。
内容的提问来源于stack exchange,提问作者ThinkAlone
相关产品推荐
相关产品推荐

