六月婷婷AV,国产偷窥猎奇福利二区,日韩三级片。,好吊色网站,日韩成人中文在线视频,国产亚洲午夜啪啪,亚洲欧美另类国产精品,国产成人av1,任你艹在线观看

搞不清 TDengine 的“復(fù)雜”查詢(xún)?一文讓它變簡(jiǎn)單

小 T 導(dǎo)讀:作為一款專(zhuān)業(yè)的時(shí)序數(shù)據(jù)庫(kù)(Time Series Database,TSDB),為滿足用戶在不同場(chǎng)景下的查詢(xún)需求,TDengine 提供了豐富的查詢(xún)功能。除了一些主要的查詢(xún)外,還包括多表聚合查詢(xún)、降采樣查詢(xún)及連續(xù)查詢(xún),本文將從實(shí)際操作層面對(duì)這三種特殊查詢(xún)進(jìn)行解讀。

查詢(xún)數(shù)據(jù)

主要查詢(xún)功能

TDengine 采用 SQL 作為查詢(xún)語(yǔ)言,應(yīng)用程序可以通過(guò) REST API 或連接器發(fā)送 SQL 語(yǔ)句,用戶還可以通過(guò) TDengine 命令行工具 taos 手動(dòng)執(zhí)行 SQL 即席查詢(xún)(Ad-Hoc Query)。TDengine 支持如下查詢(xún)功能:

  • 單列、多列數(shù)據(jù)查詢(xún)
  • 標(biāo)簽和數(shù)值的多種過(guò)濾條件:>, <, =, <>, like 等
  • 聚合結(jié)果的分組(Group by)、排序(Order by)、約束輸出(Limit/Offset)
  • 數(shù)值列及聚合結(jié)果的四則運(yùn)算
  • 時(shí)間戳對(duì)齊的連接查詢(xún)(Join Query: 隱式連接)操作
  • 多種聚合/計(jì)算函數(shù): count, max, min, avg, sum, twa, stddev, leastsquares, top, bottom, first, last, percentile, apercentile, last_row, spread, diff 等

例如:在命令行工具 taos 中,我們需要從表 d1001 中查詢(xún)出 voltage > 215 的記錄,按時(shí)間降序排列,僅僅輸出如下 2 條結(jié)果。

taos> select * from d1001 where voltage > 215 order by ts desc limit 2;
           ts            |       current        |   voltage   |        phase         |
======================================================================================
 2018-10-03 14:38:16.800 |             12.30000 |         221 |              0.31000 |
 2018-10-03 14:38:15.000 |             12.60000 |         218 |              0.33000 |
Query OK, 2 row(s) in set (0.001100s)

為滿足物聯(lián)網(wǎng)場(chǎng)景的需求,TDengine 還支持幾個(gè)特殊的函數(shù),比如 twa(時(shí)間加權(quán)平均)、spread (最大值與最小值的差)、last_row(最后一條記錄)等,未來(lái)還將有更多與物聯(lián)網(wǎng)場(chǎng)景相關(guān)的函數(shù)添加進(jìn)來(lái)。

多表聚合查詢(xún)

在物聯(lián)網(wǎng)場(chǎng)景中,往往同一個(gè)類(lèi)型的數(shù)據(jù)采集點(diǎn)有多個(gè)。TDengine 采用超級(jí)表(STable)的概念來(lái)描述某一個(gè)類(lèi)型的數(shù)據(jù)采集點(diǎn),一張普通的表來(lái)描述一個(gè)具體的數(shù)據(jù)采集點(diǎn)。同時(shí) TDengine 使用標(biāo)簽來(lái)描述數(shù)據(jù)采集點(diǎn)的靜態(tài)屬性,一個(gè)具體的數(shù)據(jù)采集點(diǎn)有具體的標(biāo)簽值。

通過(guò)指定標(biāo)簽的過(guò)濾條件,TDengine 實(shí)現(xiàn)了將超級(jí)表(某一類(lèi)型的數(shù)據(jù)采集點(diǎn))所屬的子表統(tǒng)一進(jìn)行聚合查詢(xún)。值得一提的是,對(duì)普通表的聚合函數(shù)以及絕大部分操作都適用于超級(jí)表,語(yǔ)法完全一樣。

  • 示例一

在 TAOS Shell 查找加利福尼亞州所有智能電表采集的電壓平均值,并按照 location 分組。代碼如下所示:

taos> SELECT AVG(voltage) FROM meters GROUP BY location;
       avg(voltage)        |            location            |
=============================================================
             222.000000000 | California.LosAngeles                |
             219.200000000 | California.SanFrancisco               |
Query OK, 2 row(s) in set (0.002136s)
  • 示例二

在 TAOS shell 查找 groupId 為 2 的所有智能電表過(guò)去 24 小時(shí)的記錄條數(shù),電流的最大值。代碼如下所示:

taos> SELECT count(*), max(current) FROM meters where groupId = 2 and ts > now - 24h;
     cunt(*)  |    max(current)  |
==================================
            5 |             13.4 |
Query OK, 1 row(s) in set (0.002136s)

需要注意的是,TDengine 僅容許對(duì)同屬于一個(gè)超級(jí)表的表之間進(jìn)行聚合查詢(xún),不同超級(jí)表之間的聚合查詢(xún)并不支持。

降采樣查詢(xún)、插值

除了上述場(chǎng)景,在物聯(lián)網(wǎng)場(chǎng)景中,我們還經(jīng)常需要通過(guò)降采樣(down sampling)將采集的數(shù)據(jù)按時(shí)間段進(jìn)行聚合。TDengine 提供了一個(gè)簡(jiǎn)便的關(guān)鍵詞——interval(等間隔窗口),讓按照時(shí)間窗口進(jìn)行的查詢(xún)操作變得極為簡(jiǎn)單。比如,對(duì)智能電表 d1001 采集的電流值按每 10 秒鐘求和:

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

同樣,降采樣操作也適用于超級(jí)表,比如將加利福尼亞州所有智能電表采集的電流值按每秒鐘求和:

taos> SELECT SUM(current) FROM meters where location like "California%" INTERVAL(1s);
           ts            |       sum(current)        |
======================================================
 2018-10-03 14:38:04.000 |              10.199999809 |
 2018-10-03 14:38:05.000 |              32.900000572 |
 2018-10-03 14:38:06.000 |              11.500000000 |
 2018-10-03 14:38:15.000 |              12.600000381 |
 2018-10-03 14:38:16.000 |              36.000000000 |
Query OK, 5 row(s) in set (0.001538s)

此外,降采樣操作也支持時(shí)間偏移,比如:將所有智能電表采集的電流值按每秒鐘求和,但要求每個(gè)時(shí)間窗口從 500 毫秒開(kāi)始:

taos> SELECT SUM(current) FROM meters INTERVAL(1s, 500a);
           ts            |       sum(current)        |
======================================================
 2018-10-03 14:38:04.500 |              11.189999809 |
 2018-10-03 14:38:05.500 |              31.900000572 |
 2018-10-03 14:38:06.500 |              11.600000000 |
 2018-10-03 14:38:15.500 |              12.300000381 |
 2018-10-03 14:38:16.500 |              35.000000000 |
Query OK, 5 row(s) in set (0.001521s)

眾所周知,在物聯(lián)網(wǎng)場(chǎng)景里每個(gè)數(shù)據(jù)采集點(diǎn)采集數(shù)據(jù)的時(shí)間較難同步,但很多分析算法(比如 FFT)需要把采集的數(shù)據(jù)嚴(yán)格按照時(shí)間等間隔地對(duì)齊,在很多系統(tǒng)里,這需要應(yīng)用自己寫(xiě)程序來(lái)處理,但使用 TDengine 的降采樣操作這個(gè)需求便能輕松解決了。

如果一個(gè)時(shí)間間隔里沒(méi)有采集的數(shù)據(jù),TDengine 還提供插值計(jì)算的功能。

寫(xiě)在最后

時(shí)序數(shù)據(jù)的查詢(xún)場(chǎng)景多種多樣,從用戶需求出發(fā),TDengine 進(jìn)行了一系列查詢(xún)功能的設(shè)計(jì)和優(yōu)化。本文詳細(xì)介紹了 TDengine 中的幾種復(fù)雜查詢(xún)功能,如果大家在實(shí)操中遇到問(wèn)題,可以將本文當(dāng)做執(zhí)行手冊(cè)進(jìn)行查閱,對(duì)于還無(wú)法解決的問(wèn)題,還可以加小 T 微信,進(jìn)入 TDengine 技術(shù)社區(qū)深入交流。