高效查询数据

    • 单列、多列数据查询
    • 标签和数值的多种过滤条件:>, <, =, <>, like 等
    • 聚合结果的分组(Group by)、排序(Order by)、约束输出(Limit/Offset)
    • 数值列及聚合结果的四则运算
    • 时间戳对齐的连接查询(Join Query: 隐式连接)操作
    • 多种聚合/计算函数: count, max, min, avg, sum, twa, stddev, leastsquares, top, bottom, first, last, percentile, apercentile, last_row, spread, diff等

    例如:在TAOS Shell中,从表d1001中查询出vlotage > 215的记录,按时间降序排列,仅仅输出2条。

    为满足物联网场景的需求,TDengine支持几个特殊的函数,比如twa(时间加权平均),spread (最大值与最小值的差),last_row(最后一条记录)等,更多与物联网场景相关的函数将添加进来。TDengine还支持连续查询。

    具体的查询语法请看 章节。

    示例1:在TAOS Shell,查找北京所有智能电表采集的电压平均值,并按照location分组

    1. avg(voltage) | location |
    2. =============================================================
    3. 222.000000000 | Beijing.Haidian |
    4. 219.200000000 | Beijing.Chaoyang |
    5. Query OK, 2 row(s) in set (0.002136s)

    示例2:在TAOS shell, 查找groupId为2的所有智能电表过去24小时的记录条数,电流的最大值

    TDengine仅容许对属于同一个超级表的表之间进行聚合查询,不同超级表之间的聚合查询不支持。在 TAOS SQL 的数据查询 一章,查询类操作都会注明是否支持超级表。

    1. taos> SELECT sum(current) FROM d1001 INTERVAL(10s);
    2. ======================================================
    3. 2018-10-03 14:38:00.000 | 10.300000191 |
    4. Query OK, 2 row(s) in set (0.000883s)

    降采样操作也适用于超级表,比如:将北京所有智能电表采集的电流值每秒钟求和

    降采样操作也支持时间偏移,比如:将所有智能电表采集的电流值每秒钟求和,但要求每个时间窗口从 500 毫秒开始

    1. taos> SELECT SUM(current) FROM meters INTERVAL(1s, 500a);
    2. ts | sum(current) |
    3. 2018-10-03 14:38:04.500 | 11.189999809 |
    4. 2018-10-03 14:38:05.500 | 31.900000572 |
    5. 2018-10-03 14:38:06.500 | 11.600000000 |
    6. 2018-10-03 14:38:15.500 | 12.300000381 |
    7. 2018-10-03 14:38:16.500 | 35.000000000 |

    物联网场景里,每个数据采集点采集数据的时间是难同步的,但很多分析算法(比如FFT)需要把采集的数据严格按照时间等间隔的对齐,在很多系统里,需要应用自己写程序来处理,但使用TDengine的降采样操作就轻松解决。如果一个时间间隔里,没有采集的数据,TDengine还提供插值计算的功能。