1. 程式人生 > 其它 >TDengine 2.6 正式釋出,新增大量計算函式

TDengine 2.6 正式釋出,新增大量計算函式

小 T 導讀:作為一款典型的時序資料庫(Time-Series Database)產品,TDengine 被廣泛運用於物聯網、工業網際網路、車聯網、IT 運維、能源、金融等領域。TDengine 本身提供了大量的計算函式,在很多場景下,使用者都不需要自己程式設計來實現某些計算功能。當然,隨著場景的不斷增多,使用者提出了越來越多的需求,TDengine 也在不斷地演進和提升。

經過研發同學的不懈努力,TDengine 2.6 版本正式釋出了。該版本帶來眾多新特性,一方面是優化了 SQL 語法,一方面是增加了大量的計算函式,以支援使用者的更多使用場景。該版本還修復了之前版本存在的一些 bug。

下面具體來看一下,2.6 版本帶來的重要更新。

SQL 語法優化

  1. 在新的 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 版本中,可以只提供日期部分了。

  1. 增強了 LIKE 萬用字元使用的校驗規則

當 LIKE 匹配字元為字串時,SQL 才可以被解析。

  1. 新增多個時間視窗關鍵詞

_WSTART:視窗起始時間

_WSTOP:視窗結束時間

_WDURATION(precision):視窗持續時間

_QSTART: 查詢起始時間

_QSTOP: 查詢結束時間

_QDURATION: 查詢持續時間

  1. 建立明確的轉義字元表

提供了明確的轉義規則。

新增函式

  1. 新增聚合函式 

HYPERLOGLOG() :採⽤ hyperloglog 演算法,估算某列的基數。

SELECT HYPERLOGLOG(field_name) FROM { tb_name | stb_name } [WHERE clause];

MODE():返回 database 中出現頻率最高的值,若存在多個頻率相同的最高值,輸出空。

HISTOGRAM():統計資料按照使用者指定區間的分佈。

ELAPSED():表達了統計週期內連續的時間長度,和 TWA 函式配合使用可以計算統計曲線下的面積。在通過 INTERVAL 子句指定視窗的情況下,統計在給定時間範圍內的每個視窗內有資料覆蓋的時間範圍;如果沒有 INTERVAL 子句,則返回整個給定時間範圍內的有資料覆蓋的時間範圍。

  1. 新增多個時間相關函式

NOW() :返回客戶端當前系統時間。

TODAY() :返回客戶端當日零時的系統時間。

TIMEZONE() :返回客戶端當前時區資訊。

TO_ISO8601() :將 UNIX 時間戳轉換成為 ISO8601 標準的日期時間格式,並附加客戶端時區資訊。

TO_UNIXTIMESTAMP():將日期時間格式字串轉換成 UNIX 時間戳,輸入字串內包含時區資訊也會做相應轉換。

TIMETRUNCATE() :將時間戳按照指定的時間單位進行截斷。

TIMEDIFF() :計算兩個時間戳之間的差值,並近似到指定時間單位所指定的精度。

  1. 新增多個字串處理函式

LOWER() :將字串引數值轉換為全小寫字母。

UPPER() :將字串引數值轉換為全大寫字母。

CONCAT() :字串連線函式。

CONCAT_WS() :帶分隔符的字串連線函式。

SUBSTR() :從源字串 str 中的指定位置 pos 開始取一個長度為 len 的子串並返回。

LENGTH() :以位元組計數的字串長度。

CHAR_LENGTH() :以字元計數的字串長度。

  1. 新增選擇函式

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];
  1. 其他新增計算函式

STATEDURATION():返回滿⾜某個條件的連續記錄的時間⻓度,結果作為新的⼀列追加在每⾏後⾯。

STATECOUNT():返回滿⾜某個條件的連續記錄的個數,結果作為新的⼀列追加在每⾏後⾯。

CAST():資料型別轉換函式,輸入引數 expression 支援普通列、常量、標量函式及它們之間的四則運算,不支援 tag 列,只適用於 select 子句中。

MAVG():計算連續 k 個值的移動平均數(moving average)。

典型的數學函式 ABS、COS、LOG 等。

增強了 DIFF() 函式,支援忽略負值。

taosAdapter 更新

  1. taosAdapter 支援 Prometheus 資料讀寫分離的叢集方案 remote_read 和 remote_write。
  2. taosAdapter 增加新的 RESTful 介面,支援無上限的資料批量拉取功能,保證應用能夠獲取任意大小的查詢結果,並且大大減小查詢的時延。
  3. JDBC-RESTful 支援 taosAdapter 的多次批量返回的資料結果。

當前版本也修復了之前版本中發現的一些 bug,具體可參見完整的釋出說明

2.6 版本的哪些功能是你期待已久的?趕快下載體驗吧:https://www.taosdata.com/all-downloads

此外,TDengine 的企業版本還提供了 DELETE 功能,可以刪除指定表或超級表中的資料。感興趣的使用者可以聯絡我們,試用體驗。


想了解更多 TDengine Database的具體細節,歡迎大家在GitHub上檢視相關原始碼。