tdengine 时序数据特有的函数

1.tdengine 时序数据特有的函数

时序数据特有函数是 TDENGINE 针对时序数据查询场景专门设计的一组函数。实现了高效 
且易于使用的时序数据处理能力。

cum: 累加和(cumulative sum),忽略NULL 值。 
derivative: 统计表中某列数值的单位变化率。其中单位时间区间的长度可以通过 time_interval 参数指定,
最小可以是1s,ignore_negative 参数的值可以是0或1,为1时表示忽略负值。 

diff: 统计表中某列的值与前一行对应值的差。ingore_negative 取值为0或1,可以不填,默认值为0,。不忽略负值,
ignore_negative 为1 时 表示忽略负值。

irate: 计算瞬时增长率。使用时间区间中最后两个样本数据来计算瞬时增长率。
如果这两个值呈递减关系,那么只取最后一个数用于计算,而不是使用二者差值。
mavg: 计算连续k个值的移动平均数。如果输入行数小于k,则无结果数据。参数k的合法输入范围是 [1,1000];
statecount: 返回某个条件的连续记录的条数,结果作为新的一列追加在每行后面,根据参数计算;如果条件 
为 true则加1,如果条件为false ,则重置为-1;如果数据为null,则跳过该条数据。

twa: 时间加权平均函数,统计表中某列在一段时间内的时间加权平均值。
2.嵌套查询 

tdengine 支持非关联子查询。

select max(voltage),* from (
	select tbname,last_row(ts),voltage,current,phase,groupid,location from meters 
	partition by tbname
)group by groupid;
  |   groupid   |          location          |
=================================================================================================================================================================================
            6 | d1                             | 2023-11-15 06:13:10.000 |           6 |            1.0294620 |            0.3531540 |           6 | California.PaloAlto        |
            8 | d17                            | 2023-11-15 06:13:10.000 |           8 |            1.0294620 |            0.3431540 |           4 | California.Cupertino       |
            0 | d20                            | 2023-03-11 12:54:20.000 |           0 |           -1.0278960 |           -0.3326320 |           2 | California.Cupertino       |
           16 | d2                             | 2023-11-15 06:13:10.000 |          16 |            1.1294620 |            0.3431540 |           5 | California.SanJose         |
           16 | d18                            | 2023-11-15 06:13:10.000 |          16 |            1.1294620 |            0.3631540 |           9 | California.SanJose         |
           16 | d8                             | 2023-11-15 06:13:10.000 |          16 |            1.1294620 |            0.3531540 |           1 | California.LosAngles       |
           14 | d6                             | 2023-11-15 06:13:10.000 |          14 |            1.0294620 |            0.3431540 |          10 | California.SanDiego        |
           16 | d28                            | 2023-05-04 18:00:20.000 |          16 |           -1.0212560 |           -0.3304190 |           8 | California.Cupertino       |
           16 | d4                             | 2023-11-15 06:13:10.000 |          16 |            1.1294620 |            0.3531540 |           3 | California.MountainView    |
Query OK, 9 row(s) in set (0.020100s)

#按照tbname分组,查询每张子表最新一条数据。
#然后按照groupid进行聚合,查询每组中的最大电流。

Tdengine中嵌套查询的规则:
内存查询的返回结果将作为虚拟表提供外层查询使用,建议为虚拟机表起别名,以便在外层查询中引用。
外层查询支持直接通过列名或列名的形式引用内层查询的列或伪列。
不论内存查询还是外层查询,都支持普通的表间,超级表间join操作。内层查询的计算结果也可以再参与
数据子表的Join操作。
内存查询支持的功能特性与非嵌套的查询语句能力是一致的。内存查询的 Order by 子句一般没有意义,避免编写。

与非嵌套的查询语句相比,外层查询所能支持的功能特性存在如下限制。
如果内存查询的结果数据未提供时间戳,那么计算过程隐式依赖时间戳的函数在外层无法正常工作,如:
interp,derivative,irate,last_row,first,last,twa,stateduration,tail,unique ;

如果内存查询的结果数据不是时间有序的,那么计算过程依赖数据按时间有序的函数在外层会无法正常工作。
如: leastsquares,elapsed,interp,derivative,irate,twa,diff ,statecount,stateduration,csum,mavg,tail,unique; 

计算过程需要扫描两边的函数,在外层查询中无法正常工作。如 percentile; 

3.union 子句 

(select tbname,* from d1 limit 1) union all  
(select tbname,* from d11 limit 2) union all  
(select tbname,* from d21 limit 3) ;
            tbname             |           ts            |       current        |   voltage   |        phase         |
=======================================================================================================================
 d1                             | 2020-09-13 20:26:40.000 |            1.1260610 |          18 |            0.3420200 |
Query OK, 1 row(s) in set (0.013222s)

在同一个SQL中最多支持100个UNION 子句。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值