THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
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),数据如下,灰色单元格表示对应时间戳没有数据。 |
...