TDengine v3.3.0.0 版本是一个新增了大量新功能的大版本,从体系结构变化及新增功能的规模仅次于从 2.6 版本升级至 3.0 的变动。从今天开始我逐渐向大家介绍这个版本的新功能, 今天先从一个简单的 Count 计算窗口开始。
Count 窗口可以使用在按固定数量进行统计的场景,如工厂的流水生产线,按数量进行批次打包的车间等。
按数量进行窗口切分后,便可对窗口内的一些字段做灵活的聚合计算,如找最大值,取平均值等,很方便实用。
1 语法:
COUNT_WINDOW:指定窗口类型为计数窗口,按固定的数据行数来划分窗口。
count_val:常量,是正整数,必须大于等于2,最大INT32_MAX。count_val表示每个count window包含的最大数据行数,总数据行数不能整除count_val时,最后一个窗口的行数会小于count_val。
sliding_val:是常量,表示窗口滑动的数量,类似于 interval的SLIDING 。必须大于等于1,小于等于count_val。
2 计数窗口语义:
-
默认将数据按时间戳排序,再按照count_val的值,将数据划分为多个窗口,然后做聚合计算。只有最后一个窗口,可能行数会少于 count_val。
-
支持Partition by、过滤等。
-
对于聚集函数、伪列,没有额外限制,与其他窗口相同。对于现有的伪列,支持_WSTART/_WEND/_WDURATION/_QSTART/_QEND。
-
对于包含子查询的场景,要求子查询必须输出主键的时间戳列或者是类似_wstart等输出时间戳的伪列,并且按该时间戳列有序。
3 使用场景举例