TDengine 2.6 正式发布,新增大量计算函数
小 T 导读:作为一款典型的时序数据库(Time-Series Database)产品,TDengine 被广泛运用于物联网、工业互联网、车联网、IT 运维、能源、金融等领域。TDengine 本身提供了大量的计算函数,在很多场景下,用户都不需要自己编程来实现某些计算功能。当然,随着场景的不断增多,用户提出了越来越多的需求,TDengine 也在不断地演进和提升。
经过研发同学的不懈努力,TDengine 2.6 版本正式发布了。该版本带来众多新特性,一方面是优化了 SQL 语法,一方面是增加了大量的计算函数,以支持用户的更多使用场景。该版本还修复了之前版本存在的一些 bug。
下面具体来看一下,2.6 版本带来的重要更新。
SQL 语法优化
- 在新的 SQL 语法中,TIMESTAMP 支持缩写
在 SQL 语句中用到的时间戳,可以只提供日期,比如 “2022-02-02”,系统自动将其转换为“2022-02-02 00:00:00”。
比如在之前的版本中,执行以下语句:
taos> select last(ts), sum(f1) from t1987 where ts>="2017-07-15" interval(1m) ;
TDengine 会报错:
DB error: invalid SQL: invalid timestamp (0.000065s)
我们必须这样写:
select last(ts), sum(f1) from t1987 where ts>="2017-07-15 00:00:00.000" interval(1m)
在 2.6 版本中,可以只提供日期部分了。
- 增强了 LIKE 通配符使用的校验规则
当 LIKE 匹配字符为字符串时,SQL 才可以被解析。
- 新增多个时间窗口关键词
_WSTART:窗口起始时间
_WSTOP:窗口结束时间
_WDURATION(precision):窗口持续时间
_QSTART: 查询起始时间
_QSTOP: 查询结束时间
_QDURATION: 查询持续时间
- 建立明确的转义字符表
提供了明确的转义规则。
新增函数
- 新增聚合函数
HYPERLOGLOG() :采⽤ hyperloglog 算法,估算某列的基数。
SELECT HYPERLOGLOG(field_name) FROM { tb_name | stb_name } [WHERE clause];
MODE():返回 database 中出现频率最高的值,若存在多个频率相同的最高值,输出空。
HISTOGRAM():统计数据按照用户指定区间的分布。
ELAPSED():表达了统计周期内连续的时间长度,和 TWA 函数配合使用可以计算统计曲线下的面积。在通过 INTERVAL 子句指定窗口的情况下,统计在给定时间范围内的每个窗口内有数据覆盖的时间范围;如果没有 INTERVAL 子句,则返回整个给定时间范围内的有数据覆盖的时间范围。
- 新增多个时间相关函数
NOW() :返回客户端当前系统时间。
TODAY() :返回客户端当日零时的系统时间。
TIMEZONE() :返回客户端当前时区信息。
TO_ISO8601() :将 UNIX 时间戳转换成为 ISO8601 标准的日期时间格式,并附加客户端时区信息。
TO_UNIXTIMESTAMP():将日期时间格式字符串转换成 UNIX 时间戳,输入字符串内包含时区信息也会做相应转换。
TIMETRUNCATE() :将时间戳按照指定的时间单位进行截断。
TIMEDIFF() :计算两个时间戳之间的差值,并近似到指定时间单位所指定的精度。
- 新增多个字符串处理函数
LOWER() :将字符串参数值转换为全小写字母。
UPPER() :将字符串参数值转换为全大写字母。
CONCAT() :字符串连接函数。
CONCAT_WS() :带分隔符的字符串连接函数。
SUBSTR() :从源字符串 str 中的指定位置 pos 开始取一个长度为 len 的子串并返回。
LENGTH() :以字节计数的字符串长度。
CHAR_LENGTH() :以字符计数的字符串长度。
- 新增选择函数
TAIL():返回跳过最后 offset_val 个,然后取连续 k 个记录,不忽略 NULL 值。
SELECT TAIL(field_name, k, offset_val) FROM {tb_name | stb_name} [WHERE clause];
UNIQUE(): 返回该列的数值首次出现的值。
SELECT UNIQUE(field_name) FROM {tb_name | stb_name} [WHERE clause];
- 其他新增计算函数
STATEDURATION():返回满⾜某个条件的连续记录的时间⻓度,结果作为新的⼀列追加在每⾏后⾯。
STATECOUNT():返回满⾜某个条件的连续记录的个数,结果作为新的⼀列追加在每⾏后⾯。
CAST():数据类型转换函数,输入参数 expression 支持普通列、常量、标量函数及它们之间的四则运算,不支持 tag 列,只适用于 select 子句中。
MAVG():计算连续 k 个值的移动平均数(moving average)。
典型的数学函数 ABS、COS、LOG 等。
增强了 DIFF() 函数,支持忽略负值。
taosAdapter 更新
- taosAdapter 支持 Prometheus 数据读写分离的集群方案 remote_read 和 remote_write。
- taosAdapter 增加新的 RESTful 接口,支持无上限的数据批量拉取功能,保证应用能够获取任意大小的查询结果,并且大大减小查询的时延。
- JDBC-RESTful 支持 taosAdapter 的多次批量返回的数据结果。
当前版本也修复了之前版本中发现的一些 bug,具体可参见完整的发布说明。
2.6 版本的哪些功能是你期待已久的?赶快下载体验吧:所有下载链接 - TDengine | 涛思数据。
此外,TDengine 的企业版本还提供了 DELETE 功能,可以删除指定表或超级表中的数据。感兴趣的用户可以联系我们,试用体验。
想了解更多 TDengine Database 的具体细节,欢迎大家在GitHub上查看相关源代码。
相关文章
- 虚拟化与云计算硬核技术内幕 (32) —— 产品经理与潘金莲
- 数字图像处理均值滤波matlab函数_均值滤波怎么计算
- GANs的优化函数与完整损失函数计算
- 10年程序员了竟然不懂大型网站架构技术细节:云计算服务工作原理
- 如何在Java堆中节省25%内存,降低云计算费用
- Postgresql查询效率计算初探
- Oracle使用运算函数进行各种计算(oracle运算函数)
- MySQL:利用毫秒函数进行时间计算(mysql毫秒函数)
- 利用Oracle的AVG函数计算数据平均值(oracle的平均值函数)
- MySQL实现快速计算中位数(mysql计算中位数)
- 掌握Oracle多行函数,开启多重计算新篇章(oracle多行函数)
- 函数使用MySQL中SUM函数计算求和(mysql中的sum)
- Oracle中强大的差函数: 提升计算效率(oracle差函数)
- 函数计算MySQL中Count函数的必要性(mysql中的count)
- 利用Oracle时间计算函数提升效率(oracle时间计算函数)
- 系统Oracle 薪酬系统:解决你的工资计算困惑(oracle薪酬)
- MySQL计算时间差的函数简介(mysql时间差函数)
- 使用Linux求和命令,轻松计算数字总和(linux求和命令)
- 使用日期函数在 Oracle 中进行时间格式化和计算(日期函数oracle)
- 利用Oracle内置算数函数实现复杂计算(oracle内置算数函数)
- Oracle中的神奇计算函数(oracle中的计算函数)
- 分布式Redis架构概览理解智能计算的构建基石(分布式redis架构图)
- Oracle中函数实现乘积计算(oracle乘积的函数)
- Oracle数据库中的平均值计算(oracle中的平均值)
- 谷歌创造的时间晶体会成为量子计算的曙光吗?
- PHP年龄计算函数(精确到天)
- JSP的相对路径如何计算深入研究
- PHP中使用微秒计算脚本执行时间例子