溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

發(fā)布時(shí)間:2021-12-07 13:48:48 來(lái)源:億速云 閱讀:169 作者:小新 欄目:大數(shù)據(jù)

這篇文章主要介紹了TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

在搞懂了基本的功能后,便上線了TDengine版的監(jiān)控系統(tǒng),但是發(fā)現(xiàn),在grafana中居然不能“group by”,只能通過(guò)寫(xiě)where多條語(yǔ)句將多個(gè)短信狀態(tài)數(shù)據(jù)放到一個(gè)儀表盤里,如圖:

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

如果where條件有更多,這樣的方法就太笨,并且靈活性太差。

于是,開(kāi)始仔細(xì)研究官方文檔,搞懂了“超級(jí)表”、“連續(xù)查詢“等,在這個(gè)過(guò)程中遇到過(guò)不少問(wèn)題,在這里做一下記錄(測(cè)試環(huán)境,數(shù)據(jù)是模擬產(chǎn)生的)。

一、安裝和運(yùn)行

    測(cè)試環(huán)境

  cat /etc/redhat-release
  CentOS Linux release 7.7.1908 (Core)

     安裝很簡(jiǎn)單:

  rpm -ivh tdengine-1.6.3.1-3.x86_64.rpm

     配置都用默認(rèn)的(未改配置文件)

    啟動(dòng)TDengine:

  systemctl start taosd

二、建庫(kù)、建表

    在命令行輸入“taos”

  taos>

    以下建庫(kù)、建表操作都在此提示符下進(jìn)行

  1. 創(chuàng)建數(shù)據(jù)庫(kù)

  create database jk keep 365 precision 'us';

        說(shuō)明:


    • keep 365表示該庫(kù)保存365天內(nèi)的數(shù)據(jù),365天之前的數(shù)據(jù)會(huì)被自動(dòng)清除(因?yàn)槭菚r(shí)序數(shù)據(jù)庫(kù),所以不能對(duì)庫(kù)中的表進(jìn)行delete操作);

    • precision ‘us’表示數(shù)據(jù)庫(kù)中的時(shí)間戳精度為“微秒”,(默認(rèn)是毫秒,也可以顯示寫(xiě)為precision ‘ms’), 經(jīng)測(cè)試,此處用單引號(hào)和雙引號(hào)都是可以的,但是不能沒(méi)有引號(hào)。

    • 配置文件中已經(jīng)不支持時(shí)間精度的配置,必須在建庫(kù)的時(shí)候指定(測(cè)試了很多配置都不生效,Issues后得到的官方回復(fù))

    • TDengine的設(shè)計(jì)初衷是用于物聯(lián)網(wǎng),設(shè)備的信息采集精度到“毫秒”已經(jīng)足夠用,但我司的短信平臺(tái)會(huì)有突發(fā)大量數(shù)據(jù)產(chǎn)生,為了避免可能會(huì)導(dǎo)致的數(shù)據(jù)丟失,將精度設(shè)置為“微秒”,經(jīng)測(cè)試,效果很好,測(cè)試的模擬數(shù)據(jù)插入時(shí)間戳都用“now”獲取,下圖左側(cè)為“毫秒”精度,能看到有“0 row(s)”的情況出現(xiàn),表示有數(shù)據(jù)未插入, 右側(cè)為“微秒”精度,未見(jiàn)未插入數(shù)據(jù)。TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  2. 創(chuàng)建超級(jí)表

    進(jìn)入數(shù)據(jù)庫(kù)“jk”

  taos> use jk; 
  Database changed.
  create table jiankong (ts timestamp, gatewayid binary(6), companyid binary(20), provinceid binary(10), cityid binary(10), value int, timestr binary(30))
  tags(type binary(10), subtype binary(10));

        短信系統(tǒng)中有3種type,幾百種subtype,所以將這些靜態(tài)信息(或者簡(jiǎn)單地理解為需要將進(jìn)行g(shù)roup by的字段設(shè)置為tag)

        解釋一下超級(jí)表:

        STable是同一類型數(shù)據(jù)采集點(diǎn)的抽象,是同類型采集實(shí)例的集合,包含多張數(shù)據(jù)結(jié)構(gòu)一樣的子表。

        每個(gè)STable為其子表定義了表結(jié)構(gòu)和一組標(biāo)簽:表結(jié)構(gòu)即表中記錄的數(shù)據(jù)列及其數(shù)據(jù)類型;標(biāo)簽名和數(shù)據(jù)類型由STable定義,標(biāo)簽值記錄著每個(gè)子表的靜態(tài)信息,用以對(duì)子表進(jìn)行分組過(guò)濾。

        子表本質(zhì)上就是普通的表,由一個(gè)時(shí)間戳主鍵和若干個(gè)數(shù)據(jù)列組成,每行記錄著具體的數(shù)據(jù),數(shù)據(jù)查詢操作與普通表完全相同;但子表與普通表的區(qū)別在于每個(gè)子表從屬于一張超級(jí)表,并帶有一組由STable定義的標(biāo)簽值。

        針對(duì)所有的通過(guò)STable創(chuàng)建的子表進(jìn)行多表聚合查詢,支持按照全部的TAG值進(jìn)行條件過(guò)濾(where),并可將結(jié)果按照TAGS中的值進(jìn)行聚合(group by),暫不支持針對(duì)binary類型的模糊匹配過(guò)濾。

        標(biāo)簽數(shù)據(jù)(或者叫標(biāo)簽值)直接關(guān)聯(lián)到每個(gè)子表,相同的標(biāo)簽值(一個(gè)或者多個(gè),最多6個(gè))定位到一個(gè)子表(用“寫(xiě)數(shù)據(jù)時(shí)自動(dòng)建表”的方式,可以將“相同的標(biāo)簽值”對(duì)應(yīng)到多個(gè)子表)。

        tag值支持中文,需要將tag類型設(shè)置為NCHAR(在其他測(cè)試中已經(jīng)驗(yàn)證過(guò))。

        

  3. 創(chuàng)建子表(子表就是普通表,表結(jié)構(gòu)完全由超級(jí)表定義):

  create table jiankong_sub_send using jiankong tags ('send', 'send');    
  create table jiankong_sub_delivrd using jiankong tags ('delivrd', 'delivrd');
  create table jiankong_sub_undeliv_db_0108 using jiankong tags ('undeliv', 'DB:0108');
  create table jiankong_sub_undeliv_db_0107 using jiankong tags ('undeliv', 'DB:0107');
  create table jiankong_sub_undeliv_balance using jiankong tags ('undeliv', 'BALANCE');
  create table jiankong_sub_undeliv_id_0076 using jiankong tags ('undeliv', 'ID:0076');
  create table jiankong_sub_undeliv_ib_0008 using jiankong tags ('undeliv', 'IB:0008');

        相同類型的type和subtype的組合創(chuàng)建為一個(gè)子表(只是進(jìn)行測(cè)試,所以并沒(méi)有將所有的幾百個(gè)subtype都進(jìn)行建表)

  4. 插入數(shù)據(jù)

  INSERT INTO jiankong_sub_send VALUES (now, 3034, '1564', '109', '1272', '2', '201909231530')

  INSERT INTO jiankong_sub_delivrd VALUES (now, 3034, '1564', '109', '1272', '2', '201909231530')

  INSERT INTO jiankong_sub_undeliv_balance VALUES (now, 1179, '152', '106', '1000', '1', '201910071113')

  INSERT INTO jiankong_sub_undeliv_id_0076 VALUES (now, 1165, '1785', '111', '1226', '1', '201910071415')

  INSERT INTO jiankong_sub_undeliv_ib_0008 VALUES (now, 1165, '1785', '127', '1000', '2', '201910061727')

  INSERT INTO jiankong_sub_undeliv_db_0108 VALUES (now, 90, '548', '123', '1237', '1', '201910061127')

  INSERT INTO jiankong_sub_undeliv_db_0107 VALUES (now, 2261, '808', '116', '1314', '2', '201910032106')

    以上是對(duì)上述創(chuàng)建的7個(gè)子表分別插入模擬數(shù)據(jù),由于模擬大量數(shù)據(jù),所以需要寫(xiě)shell腳本(也可以用其他方式)進(jìn)行數(shù)據(jù)灌入。

    寫(xiě)入數(shù)據(jù)時(shí)不能直接對(duì)STable操作,而是要對(duì)每張子表進(jìn)行操作。

  5. 數(shù)據(jù)庫(kù)、表結(jié)構(gòu)等查詢

        查詢數(shù)據(jù)庫(kù)信息:

  taos> show databases;
              name              |     created time     |  ntables  |  vgroups  |replica| days  |  keep1,keep2,keep(D)   |  tables   |   rows    | cache(b)  |      ablocks       |tblocks| ctime(s)  | clog | comp |time precision|  status  |
  ==============================================================================================================================================================================================================================================
  log                             | 19-11-18 16:37:14.025|          4|          1|      1|     10|30,30,30                |         32|       1024|       2048|             2.00000|     32|       3600|     1|     2|us            |ready     |
  jk                              | 19-11-18 16:48:19.867|         10|          1|      1|     10|365,365,365             |       1024|       4096|      16384|             4.00000|    100|       3600|     1|     2|us            |ready     |
  Query OK, 1 row(s) in set (0.002487s)

        查詢超級(jí)表:

  taos> show stables;
                              name                              |     created_time     |columns| tags  |  tables   |
  ====================================================================================================================
  jiankong                                                        | 19-11-18 16:48:41.540|      7|      2|          7|
  Query OK, 1 row(s) in set (0.002140s)

        查詢超級(jí)表的表結(jié)構(gòu):

    taos> describe jiankong;
                             Field                              |      Type      |  Length   |  Note  |
    =======================================================================================================
    ts                                                              |TIMESTAMP       |          8|        |
    gatewayid                                                       |BINARY          |          6|        |
    companyid                                                       |BINARY          |         20|        |
    provinceid                                                      |BINARY          |         10|        |
    cityid                                                          |BINARY          |         10|        |
    value                                                           |INT             |          4|        |
    timestr                                                         |BINARY          |         30|        |
    type                                                            |BINARY          |         10|tag     |
    subtype                                                         |BINARY          |         10|tag     |
    Query OK, 9 row(s) in set (0.001301s)

        可以在Note列看到“tag”,表示是此列是標(biāo)簽

        查詢子表:

    taos> show tables;
                           table_name                           |     created_time     |columns|                             stable                             |
    =================================================================================================================================================================
    jiankong_sub_delivrd                                            | 19-11-18 16:49:17.009|      7|jiankong                                                        |
    jiankong_sub_undeliv_ib_0008                                    | 19-11-18 16:49:17.025|      7|jiankong                                                        |
    jiankong_sub_undeliv_db_0108                                    | 19-11-18 16:49:17.016|      7|jiankong                                                        |
    jiankong_sub_undeliv_db_0107                                    | 19-11-18 16:49:17.018|      7|jiankong                                                        |
    jiankong_sub_undeliv_id_0076                                    | 19-11-18 16:49:17.023|      7|jiankong                                                        |
    jiankong_sub_send                                               | 19-11-18 16:49:17.003|      7|jiankong                                                        |
    jiankong_sub_undeliv_balance                                    | 19-11-18 16:49:17.021|      7|jiankong                                                        |
    Query OK, 10 row(s) in set (0.007001s)

         查詢具體的子表的表結(jié)構(gòu):

    taos> describe jiankong_sub_undeliv_db_0108;
                             Field                              |      Type      |  Length   |   Note   |
    =========================================================================================================
    ts                                                              |TIMESTAMP       |          8|          |
    gatewayid                                                       |BINARY          |          6|          |
    companyid                                                       |BINARY          |         20|          |
    provinceid                                                      |BINARY          |         10|          |
    cityid                                                          |BINARY          |         10|          |
    value                                                           |INT             |          4|          |
    timestr                                                         |BINARY          |         30|          |
    type                                                            |BINARY          |         10|undeliv   |
    subtype                                                         |BINARY          |         10|DB:0108   |
    Query OK, 9 row(s) in set (0.001195s)

        可以在Note列看到“undeliv”(超級(jí)表中的type字段)和“DB:0108"(超級(jí)表中的subtype字段),這2個(gè)靜態(tài)標(biāo)簽值確定了這個(gè)子表

  6. 數(shù)據(jù)查詢

        對(duì)type進(jìn)行分組聚合查詢:

    taos> select sum(value) from jk.jiankong group by type;
         sum(value)      |   type   |
    =================================
                 11827688|delivrd   |
                 55566578|send      |
                 46687487|undeliv   |
    Query OK, 3 row(s) in set (0.018251s)

        對(duì)subtype進(jìn)行分組聚合查詢:

    taos>
    taos> select sum(value) from jk.jiankong group by subtype;
         sum(value)      | subtype  |
    =================================
                     9317|BALANCE   |
                    65219|DB:0107   |
                  2077691|DB:0108   |
                  2804417|IB:0008   |
                 41730843|ID:0076   |
                 11827688|delivrd   |
                 55566578|send      |
    Query OK, 7 row(s) in set (0.013978s)

        對(duì)type和subtype進(jìn)行分組聚合查詢:

    taos> select sum(value) from jk.jiankong group by type, subtype;
         sum(value)      |   type   | subtype  |
    ============================================
                 11827688|delivrd   |delivrd   |
                 55566578|send      |send      |
                     9317|undeliv   |BALANCE   |
                    65219|undeliv   |DB:0107   |
                  2077691|undeliv   |DB:0108   |
                  2804417|undeliv   |IB:0008   |
                 41730843|undeliv   |ID:0076   |
    Query OK, 7 row(s) in set (0.732830s)

        按天對(duì)type和subtype進(jìn)行分組聚合查詢:

taos> select sum(value) from jk.jiankong interval(1d) group by type, subtype;
           ts            |     sum(value)      |   type   | subtype  |
======================================================================
 19-11-18 00:00:00.000000|              1760800|delivrd   |delivrd   |
 19-11-19 00:00:00.000000|                14768|delivrd   |delivrd   |
 19-11-20 00:00:00.000000|              3290720|delivrd   |delivrd   |
 19-11-21 00:00:00.000000|              4973640|delivrd   |delivrd   |
 19-11-22 00:00:00.000000|              1787760|delivrd   |delivrd   |
 19-11-18 00:00:00.000000|             36976790|send      |send      |
 19-11-19 00:00:00.000000|               310128|send      |send      |
 19-11-20 00:00:00.000000|              9482760|send      |send      |
 19-11-21 00:00:00.000000|              6470940|send      |send      |
 19-11-22 00:00:00.000000|              2325960|send      |send      |
 19-11-18 00:00:00.000000|                 6200|undeliv   |BALANCE   |
 19-11-19 00:00:00.000000|                   52|undeliv   |BALANCE   |
 19-11-20 00:00:00.000000|                 1590|undeliv   |BALANCE   |
 19-11-21 00:00:00.000000|                 1085|undeliv   |BALANCE   |
 19-11-22 00:00:00.000000|                  390|undeliv   |BALANCE   |
 19-11-18 00:00:00.000000|                43400|undeliv   |DB:0107   |
 19-11-19 00:00:00.000000|                  364|undeliv   |DB:0107   |
 19-11-20 00:00:00.000000|                11130|undeliv   |DB:0107   |
 19-11-21 00:00:00.000000|                 7595|undeliv   |DB:0107   |
 19-11-22 00:00:00.000000|                 2730|undeliv   |DB:0107   |
 19-11-18 00:00:00.000000|              1382600|undeliv   |DB:0108   |
 19-11-19 00:00:00.000000|                11596|undeliv   |DB:0108   |
 19-11-20 00:00:00.000000|               354570|undeliv   |DB:0108   |
 19-11-21 00:00:00.000000|               241955|undeliv   |DB:0108   |
 19-11-22 00:00:00.000000|                86970|undeliv   |DB:0108   |
 19-11-18 00:00:00.000000|              1866200|undeliv   |IB:0008   |
 19-11-19 00:00:00.000000|                15652|undeliv   |IB:0008   |
 19-11-20 00:00:00.000000|               478590|undeliv   |IB:0008   |
 19-11-21 00:00:00.000000|               326585|undeliv   |IB:0008   |
 19-11-22 00:00:00.000000|               117390|undeliv   |IB:0008   |
 19-11-18 00:00:00.000000|             27769800|undeliv   |ID:0076   |
 19-11-19 00:00:00.000000|               232908|undeliv   |ID:0076   |
 19-11-20 00:00:00.000000|              7121610|undeliv   |ID:0076   |
 19-11-21 00:00:00.000000|              4859715|undeliv   |ID:0076   |
 19-11-22 00:00:00.000000|              1746810|undeliv   |ID:0076   |
Query OK, 35 row(s) in set (0.023865s)

        此處interval是聚合時(shí)間段的長(zhǎng)度, 最短時(shí)間間隔10毫秒(10a)

        未建超級(jí)表時(shí),對(duì)普通表進(jìn)行分組聚合查詢,會(huì)報(bào)錯(cuò):

    taos> select sum(value) from jk.jiankong group by type;
    TSDB error: invalid SQL: group by only available for STable query

  7. 寫(xiě)數(shù)據(jù)時(shí)自動(dòng)建子表

        我們有另外一個(gè)需求,由于要監(jiān)控的靜態(tài)數(shù)據(jù)多達(dá)幾百個(gè),而且具有不確定性,所以無(wú)法全部在建庫(kù)、建表的時(shí)候創(chuàng)建所有子表,這個(gè)功能完全解決了我們的這個(gè)問(wèn)題。

        以下是官網(wǎng)的文檔摘錄:

        在某些特殊場(chǎng)景中,用戶在寫(xiě)數(shù)據(jù)時(shí)并不確定某個(gè)設(shè)備的表是否存在,此時(shí)可使用自動(dòng)建表語(yǔ)法來(lái)實(shí)現(xiàn)寫(xiě)入數(shù)據(jù)時(shí)用超級(jí)表定義的表結(jié)構(gòu)自動(dòng)創(chuàng)建不存在的子表,若該表已存在則不會(huì)建立新表。

        注意:自動(dòng)建表語(yǔ)句只能自動(dòng)建立子表而不能建立超級(jí)表,這就要求超級(jí)表已經(jīng)被事先定義好。自動(dòng)建表語(yǔ)法跟insert/import語(yǔ)法非常相似,唯一區(qū)別是語(yǔ)句中增加了超級(jí)表和標(biāo)簽信息。具體語(yǔ)法如下:

        INSERT INTO <tb_name> USING <stb_name> TAGS (<tag1_value>, ...) VALUES (field_value, ...) (field_value, ...) ...;

        

        對(duì)比,用create創(chuàng)建子表:

        create table jiankong_sub_send using jiankong tags ('send', 'send');

三、安裝和配置garafana

  1. 安裝

        在官網(wǎng)https://grafana.com/grafana/download下載grafana的rpm安裝包后,進(jìn)行安裝:

    rpm -ivh grafana-6.4.4-1.x86_64.rpm

  2. copy TDengine的Grafana插件到Grafana的插件目錄

        TDengine的Grafana插件在安裝包的/usr/local/taos/connector/grafana目錄下

   cp -r /usr/local/taos/connector/grafana/tdengine/ /var/lib/grafana/plugins

  3. 啟動(dòng)Grafana

    systemctl start grafana-server

  4. 在瀏覽器中通過(guò)host:3000登錄Grafana服務(wù)器

    默認(rèn)用戶名和密碼都是admin

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  5. 添加TDengine數(shù)據(jù)源

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

在最下方找到“TDengine”

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        Name:“TDengine”(可以是其他名字)

        Host:測(cè)試服務(wù)器地址“http://192.168.8.66:6020”

        User:  默認(rèn)為“root”

        Password:默認(rèn)為“taosdata”

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

測(cè)試一下:

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  6. 添加Folder

        將相同類型需要監(jiān)控的儀表盤(dashboard)放到一個(gè)Folder中

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  7. 添加Dashboard

        進(jìn)入剛才創(chuàng)建的Folder后,創(chuàng)建Dashboard

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

INPUT處的sql語(yǔ)句,要注意fill的位置,需要在group by前面,否則報(bào)錯(cuò)

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        配置圖形顯示

        可以根據(jù)需求進(jìn)行曲線圖,表格,儀表盤等的選擇

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        在這里配置“曲線圖”,圖示下方是具體的圖形顯示細(xì)則,如:標(biāo)線、是否填充,對(duì)顯示的字段進(jìn)行曲線顏色的自定義等

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        給此儀表盤起個(gè)一看就懂的名字:

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  8. 配置了6個(gè)儀表盤

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

  9. 無(wú)group by和有g(shù)roup by的實(shí)例

        無(wú)group by,需要寫(xiě)多條sql,通過(guò)where條件去區(qū)分,如果分類多就很麻煩且不靈活

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        有g(shù)roup by,一條sql就解決問(wèn)題了:

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

        下圖是有無(wú)group by的曲線趨勢(shì)對(duì)比,可以看到是一模一樣的

TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化

四、高級(jí)功能初探和一些聯(lián)想

  1. 連續(xù)查詢(Continuous Query)----用戶級(jí)別的預(yù)計(jì)算

        TDengine的“預(yù)計(jì)算”的概念我覺(jué)得非常的棒,官網(wǎng)文檔摘錄如下:

為有效地提升查詢處理的性能,針對(duì)物聯(lián)網(wǎng)數(shù)據(jù)的不可更改的特點(diǎn),TDengine采用在每個(gè)保存的數(shù)據(jù)塊上,都記錄下該數(shù)據(jù)塊中數(shù)據(jù)的最大值、最小值、和等統(tǒng)計(jì)數(shù)據(jù)。如果查詢處理涉及整個(gè)數(shù)據(jù)塊的全部數(shù)據(jù),則直接使用預(yù)計(jì)算結(jié)果,不再讀取數(shù)據(jù)塊的內(nèi)容。由于預(yù)計(jì)算模塊的大小遠(yuǎn)小于磁盤上存儲(chǔ)的具體數(shù)據(jù)的大小,對(duì)于磁盤IO為瓶頸的查詢處理,使用預(yù)計(jì)算結(jié)果可以極大地減小讀取IO,并加速查詢處理的流程。

        連續(xù)查詢的官網(wǎng)文檔摘錄如下:

基于滑動(dòng)窗口的流式計(jì)算(Stream)

連續(xù)查詢是TDengine定期自動(dòng)執(zhí)行的查詢,采用滑動(dòng)窗口的方式進(jìn)行計(jì)算,是一種簡(jiǎn)化的時(shí)間驅(qū)動(dòng)的流式計(jì)算。針對(duì)庫(kù)中的表或超級(jí)表,TDengine可提供定期自動(dòng)執(zhí)行的連續(xù)查詢,用戶可讓TDengine推送查詢的結(jié)果,也可以將結(jié)果再寫(xiě)回到TDengine中。每次執(zhí)行的查詢是一個(gè)時(shí)間窗口,時(shí)間窗口隨著時(shí)間流動(dòng)向前滑動(dòng)。在定義連續(xù)查詢的時(shí)候需要指定時(shí)間窗口(time window, 參數(shù)interval )大小和每次前向增量時(shí)間(forward sliding times, 參數(shù)sliding)。

        其中,將結(jié)果再寫(xiě)回到TDengine中的方式其實(shí)就是一種用戶級(jí)別的預(yù)計(jì)算,這樣由TDengine按照用戶定義的時(shí)間窗口和時(shí)間增量進(jìn)行后臺(tái)的計(jì)算,在用戶查詢數(shù)據(jù)的時(shí)候,直接從回寫(xiě)的表中讀取數(shù)據(jù),速度就會(huì)非??臁?/p>

        創(chuàng)建連續(xù)查詢:

    taos> create table test_stream_sum as select sum(value) from jiankong interval(20s) sliding(10s) group by type, subtype;
    Query OK, 1 row(s) affected (0.000983s)

        上述連續(xù)查詢,sql的select部分實(shí)際的輸出結(jié)果為:

taos> select sum(value) from jiankong interval(20s) group by type, subtype;
           ts            |     sum(value)      |   type   | subtype  |
======================================================================
 19-11-18 16:50:40.000000|                 9088|delivrd   |delivrd   |
 19-11-18 16:51:00.000000|                31808|delivrd   |delivrd   |
 19-11-18 16:51:20.000000|                15904|delivrd   |delivrd   |
 19-11-18 16:52:20.000000|                12212|delivrd   |delivrd   |
 19-11-18 16:52:40.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:53:00.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:53:20.000000|                31808|delivrd   |delivrd   |
 19-11-18 16:53:40.000000|                31240|delivrd   |delivrd   |
 19-11-18 16:54:00.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:54:20.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:54:40.000000|                31240|delivrd   |delivrd   |
 19-11-18 16:55:00.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:55:20.000000|                28400|delivrd   |delivrd   |
 19-11-18 16:55:40.000000|                31808|delivrd   |delivrd   |
 19-11-18 16:56:00.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:56:20.000000|                31240|delivrd   |delivrd   |
 19-11-18 16:56:40.000000|                31524|delivrd   |delivrd   |
 19-11-18 16:57:00.000000|                32092|delivrd   |delivrd   |
 19-11-18 16:57:20.000000|                31240|delivrd   |delivrd   |
 19-11-18 16:57:40.000000|                32092|delivrd   |delivrd   |
 19-11-18 16:58:00.000000|                31240|delivrd   |delivrd   |
 19-11-18 16:58:20.000000|                22720|delivrd   |delivrd   |
 19-11-18 16:50:40.000000|               190848|send      |send      |

        自動(dòng)創(chuàng)建的連續(xù)查詢的表中實(shí)際的數(shù)據(jù)為:

taos> select * from test_stream_sum;
           ts            |     sum_value_      |
================================================
 19-11-18 17:17:30.000000|                 2556|
 19-11-18 17:17:40.000000|                18460|
 19-11-18 17:17:50.000000|                15904|
 19-11-18 17:18:00.000000|                15620|
Query OK, 4 row(s) in set (0.000431s)

        上述結(jié)果并不是期待的結(jié)果,沒(méi)有按照我定義的group by字段進(jìn)行聚合查詢顯示。

        于是github Issues, taos的攻城獅回復(fù)“連續(xù)查詢目前還不能很好的支持 group by,這個(gè)問(wèn)題已經(jīng)在我們的計(jì)劃列表里,后續(xù)會(huì)完善這方面的功能”,原因是“因?yàn)檫@樣回寫(xiě)后,新表的時(shí)間戳主鍵可能出現(xiàn)相同(不同的group by字段會(huì)有相同的時(shí)間),就會(huì)沖突了,所以暫時(shí)不支持”。

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“TDengine+Grafana如何實(shí)現(xiàn)數(shù)據(jù)可視化”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持億速云,關(guān)注億速云行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI