Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Markdown
## 背景

在 IoTDB 中,聚合查询可以使用 `GROUP BY` 子句指定按照时间区间分段聚合。用户可以指定聚合的时间间隔和滑动步长,相关参数如下:

- 参数 1:整体的时间窗口。
- 参数 2(interval):划分时间轴的时间间隔参数(> 0)。
- 参数 3(slidingStep):滑动步长(可选,默认值与时间间隔相同)。

![img](https://user-images.githubusercontent.com/16079446/69109512-f808bc80-0ab2-11ea-9e4d-b2b2f58fb474.png)

在之前的定义中,滑动步长必须大于等于时间间隔,现在拟支持滑动步长小于时间间隔的情况。

## 设计思路

根据时间间隔和滑动步长将整体的时间窗口划分成若干**预聚合窗口**,对预聚合窗口内的数据进行聚合(调用之前的接口即可)。将这些预聚合值维护在一个队列中,根据这些预聚合值求出每个**聚合窗口**的聚合值。

## 算法过程

### 预聚合窗口划分

若 interval >=< slidingStep,预聚合窗口等于聚合窗口。

若 interval <>= slidingStep,预聚合窗口由各个聚合窗口的边界划分而成。

例:整体时间窗口为 [0, 32),数据如下,灰色单元格表示对应时间戳没有数据。

...