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

Apache IoTDB 0.13.3如何同时实现分组级查询与空值填充?

在Apache IoTDB 0.13.3中实现按时间层级分组并填充空数据点

要实现按时间粒度(group level)分组查询同时填充空数据点,核心是结合GROUP BY TIME语法指定分组粒度,再通过FILL子句配置空值填充规则。以下是具体用法和示例:

核心语法结构

SELECT <聚合函数>(<测点>)
FROM <存储组路径>
WHERE time <时间范围>
GROUP BY TIME(<时间粒度>)
FILL(<填充规则>);

常用填充规则及示例

1. 前向填充(沿用前一个非空值)

适合连续型数据(如温度、湿度),当某时间段无数据时,使用上一个有数据的时间段的值填充:

SELECT AVG(temperature)
FROM root.sensor.device0
WHERE time >= '2024-05-01 00:00:00' AND time <= '2024-05-01 23:59:59'
GROUP BY TIME(1h)
FILL(previous);

2. 固定值填充

直接用指定常量填充空数据点,适合状态类数据或需要统一默认值的场景:

SELECT MAX(humidity)
FROM root.sensor.device0
WHERE time >= '2024-05-01 00:00:00' AND time <= '2024-05-01 23:59:59'
GROUP BY TIME(30m)
FILL(0);

3. 线性填充

基于前后非空值的线性插值填充,适合数值型连续数据的补全:

SELECT SUM(power_consumption)
FROM root.sensor.device0
WHERE time >= '2024-05-01 00:00:00' AND time <= '2024-05-01 02:00:00'
GROUP BY TIME(1h)
FILL(linear);

4. 多测点不同填充规则

如果查询多个测点,可为每个测点单独指定填充方式:

SELECT AVG(temperature), MAX(humidity)
FROM root.sensor.device0
WHERE time >= '2024-05-01 00:00:00' AND time <= '2024-05-01 23:59:59'
GROUP BY TIME(1h)
FILL(temperature WITH previous, humidity WITH 0);

注意事项

  • GROUP BY TIME后的时间粒度支持多种单位,如1s(秒)、5m(分钟)、2h(小时)、1d(天)等
  • FILL子句仅对GROUP BY TIME生成的空数据点生效,会确保时间范围内的每个分组时段都有数据行返回
  • IoTDB 0.13.3暂不支持跨设备分组的填充,仅针对单设备或同存储组下的设备生效

内容的提问来源于stack exchange,提问作者张满月

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 23:22:37