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

TDengine时间窗口查询如何用前一个非空值填充缺失数据?

TDengine秒级统计补全缺失数据的SQL修改方案

你的问题核心在于:用first(ts)作为时间字段时,无数据的区间不会生成对应行,导致FILL(PREV)没有可填充的行对象,自然无法生效。

修改后的SQL语句如下:

SELECT 
  _wstart, 
  last(voltage) 
FROM 
  d1 
WHERE 
  ts >= '2017-07-14 10:40:00.000' 
  AND ts <= '2017-07-14 10:41:00.066' 
INTERVAL(1s) 
FILL(PREV);

关键调整说明:

  • 用_wstart替代first(ts):_wstart是TDengine为INTERVAL查询自动生成的区间起始时间字段,它会为每个指定的秒级区间强制生成一行记录,不管该区间有没有原始数据
  • 聚合函数选择:last(voltage)会取每个秒级区间内最后一条非空的电压值;如果你的需求是取区间内第一条值,换成first(voltage)即可
  • FILL(PREV):现在每个区间都有行对象,当某个区间的voltage为null时,就会自动用前一个非null的电压值填充

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 11:16:12