測點管理
測點管理
數據庫管理
數據庫(Database)可以被視為關系數據庫中的Database。
創建數據庫
我們可以根據存儲模型建立相應的數據庫。如下所示:
IoTDB > CREATE DATABASE root.ln需要注意的是,推薦創建一個 database.
Database 的父子節點都不能再設置 database。例如在已經有root.ln和root.sgcc這兩個 database 的情況下,創建root.ln.wf01 database 是不可行的。系統將給出相應的錯誤提示,如下所示:
IoTDB> CREATE DATABASE root.ln.wf01
Msg: 300: root.ln has already been created as database.Database 節點名命名規則:
- 節點名可由中英文字符、數字、下劃線(_)、英文句號(.)、反引號(`) 組成
- 若節點名為以下情況,則必須用反引號(`) 將整個名稱包裹。
- 純數字(如 12345)
- 含有特殊字符(如 . 或 _)并可能引發歧義的名稱(如 db.01、_temp)
- 反引號的特殊處理:
若節點名本身需要包含反引號(`),則需用兩個反引號(``) 表示一個反引號。例如:命名為`db123``(本身包含一個反引號),需寫為 `db123```。
還需注意,如果在 Windows 系統上部署,database 名是大小寫不敏感的。例如同時創建root.ln 和 root.LN 是不被允許的。
查看數據庫
在 database 創建后,我們可以使用 SHOW DATABASES 語句和 SHOW DATABASES <PathPattern> 來查看 database,SQL 語句如下所示:
IoTDB> show databases
IoTDB> show databases root.*
IoTDB> show databases root.**執行結果為:
+-------------+----+-------------------------+-----------------------+-----------------------+
| database| ttl|schema_replication_factor|data_replication_factor|time_partition_interval|
+-------------+----+-------------------------+-----------------------+-----------------------+
| root.sgcc|null| 2| 2| 604800|
| root.ln|null| 2| 2| 604800|
+-------------+----+-------------------------+-----------------------+-----------------------+
Total line number = 2
It costs 0.060s刪除數據庫
用戶可以使用DELETE DATABASE <PathPattern>語句刪除該路徑模式匹配的所有的數據庫。在刪除的過程中,需要注意的是數據庫的數據也會被刪除。
IoTDB > DELETE DATABASE root.ln
IoTDB > DELETE DATABASE root.sgcc
// 刪除所有數據,時間序列以及數據庫
IoTDB > DELETE DATABASE root.**統計數據庫數量
用戶可以使用COUNT DATABASES <PathPattern>語句統計數據庫的數量,允許指定PathPattern 用來統計匹配該PathPattern 的數據庫的數量
SQL 語句如下所示:
IoTDB> show databases
IoTDB> count databases
IoTDB> count databases root.*
IoTDB> count databases root.sgcc.*
IoTDB> count databases root.sgcc執行結果為:
+-------------+
| database|
+-------------+
| root.sgcc|
| root.turbine|
| root.ln|
+-------------+
Total line number = 3
It costs 0.003s
+-------------+
| Database|
+-------------+
| 3|
+-------------+
Total line number = 1
It costs 0.003s
+-------------+
| Database|
+-------------+
| 3|
+-------------+
Total line number = 1
It costs 0.002s
+-------------+
| Database|
+-------------+
| 0|
+-------------+
Total line number = 1
It costs 0.002s
+-------------+
| database|
+-------------+
| 1|
+-------------+
Total line number = 1
It costs 0.002s數據保留時間(TTL)
IoTDB 支持對 device 級別設置數據保留時間(TTL),這使得 IoTDB 可以定期、自動地刪除一定時間之前的數據。合理使用 TTL 可以幫助您控制 IoTDB 占用的總磁盤空間以避免出現磁盤寫滿等異常。并且,隨著文件數量的增多,查詢性能往往隨之下降,內存占用也會有所提高。及時地刪除一些較老的文件有助于使查詢性能維持在一個較高的水平和減少內存資源的占用。
TTL的默認單位為毫秒,如果配置文件中的時間精度修改為其他單位,設置ttl時仍然使用毫秒單位。
當設置 TTL 時,系統會根據設置的路徑尋找所包含的所有 device,并為這些 device 設置 TTL 時間,系統會按設備粒度對過期數據進行刪除。請注意,此處是否過期判斷依據的是數據點時間,不是寫入時間。
當設備數據過期后,將不能被查詢到,但磁盤文件中的數據不能保證立即刪除(會在一定時間內刪除),但可以保證最終被刪除。
考慮到操作代價,系統不會立即物理刪除超過 TTL 的數據,而是通過合并來延遲地物理刪除。因此,在數據被物理刪除前,如果調小或者解除 TTL,可能會導致之前因 TTL 而不可見的數據重新出現。
系統中僅能設置至多 1000 條 TTL 規則,達到該上限時,需要先刪除部分 TTL 規則才能設置新的規則
TTL Path 規則
設置的路徑 path 只支持前綴路徑(即路徑中間不能帶 * , 且必須以 ** 結尾),該路徑會匹配到設備,也允許用戶指定不帶星的 path 為具體的 database 或 device,當 path 不帶 * 時,會檢查是否匹配到 database,若匹配到 database,則會同時設置 path 和 path.**。
注意:設備 TTL 設置不會對元數據的存在性進行校驗,即允許對一條不存在的設備設置 TTL。
合格的 path:
root.**
root.db.**
root.db.group1.**
root.db
root.db.group1.d1
不合格的 path:
root.*.db
root.**.db.*
root.db.*TTL 適用規則
當一個設備適用多條TTL規則時,優先適用較精確和較長的規則。例如對于設備“root.bj.hd.dist001.turbine001”來說,規則“root.bj.hd.dist001.turbine001”比“root.bj.hd.dist001.**”優先,而規則“root.bj.hd.dist001.**”比“root.bj.hd.**”優先;
設置 TTL
set ttl 操作可以理解為設置一條 TTL規則,比如 set ttl to root.sg.group1.** 就相當于對所有可以匹配到該路徑模式的設備掛載 ttl。 unset ttl 操作表示對相應路徑模式卸載 TTL,若不存在對應 TTL,則不做任何事。若想把 TTL 調成無限大,則可以使用 INF 關鍵字
設置 TTL 的 SQL 語句如下所示:
set ttl to pathPattern 360000;pathPattern 是前綴路徑,即路徑中間不能帶 * 且必須以 ** 結尾。
pathPattern 匹配對應的設備。為了兼容老版本 SQL 語法,允許用戶輸入的 pathPattern 匹配到 db,則自動將前綴路徑擴展為 path.**。
例如,寫set ttl to root.sg 360000 則會自動轉化為set ttl to root.sg.** 360000,轉化后的語句對所有 root.sg 下的 device 設置TTL。
但若寫的 pathPattern 無法匹配到 db,則上述邏輯不會生效。
如寫set ttl to root.sg.group 360000 ,由于root.sg.group未匹配到 db,則不會被擴充為root.sg.group.**。 也允許指定具體 device,不帶 *。
取消 TTL
取消 TTL 的 SQL 語句如下所示:
IoTDB> unset ttl from root.ln取消設置 TTL 后, root.ln 路徑下所有的數據都會被保存。
IoTDB> unset ttl from root.sgcc.**取消設置root.sgcc路徑下的所有的 TTL 。
IoTDB> unset ttl from root.**取消設置所有的 TTL 。
新語法
IoTDB> unset ttl from root.**舊語法
IoTDB> unset ttl to root.**新舊語法在功能上沒有區別并且同時兼容,僅是新語法在用詞上更符合常規。
顯示 TTL
顯示 TTL 的 SQL 語句如下所示:
show all ttl
IoTDB> SHOW ALL TTL
+--------------+--------+
| path| TTL|
| root.**|55555555|
| root.sg2.a.**|44440000|
+--------------+--------+show ttl on pathPattern
IoTDB> SHOW TTL ON root.db.**;
+--------------+--------+
| path| TTL|
| root.db.**|55555555|
| root.db.a.**|44440000|
+--------------+--------+SHOW ALL TTL 這個例子會給出所有的 TTL。
SHOW TTL ON pathPattern 這個例子會顯示指定路徑的 TTL。
顯示設備的 TTL。
IoTDB> show devices
+---------------+---------+---------+
| Device|IsAligned| TTL|
+---------------+---------+---------+
|root.sg.device1| false| 36000000|
|root.sg.device2| true| INF|
+---------------+---------+---------+所有設備都一定會有 TTL,即不可能是 null。INF 表示無窮大。
設置異構數據庫(進階操作)
在熟悉 IoTDB 元數據建模的前提下,用戶可以在 IoTDB 中設置異構的數據庫,以便應對不同的生產需求。
目前支持的數據庫異構參數有:
| 參數名 | 參數類型 | 參數描述 |
|---|---|---|
| TTL | Long | 數據庫的 TTL |
| SCHEMA_REPLICATION_FACTOR | Integer | 數據庫的元數據副本數 |
| DATA_REPLICATION_FACTOR | Integer | 數據庫的數據副本數 |
| SCHEMA_REGION_GROUP_NUM | Integer | 數據庫的 SchemaRegionGroup 數量 |
| DATA_REGION_GROUP_NUM | Integer | 數據庫的 DataRegionGroup 數量 |
用戶在配置異構參數時需要注意以下三點:
- TTL 和 TIME_PARTITION_INTERVAL 必須為正整數。
- SCHEMA_REPLICATION_FACTOR 和 DATA_REPLICATION_FACTOR 必須小于等于已部署的 DataNode 數量。
- SCHEMA_REGION_GROUP_NUM 和 DATA_REGION_GROUP_NUM 的功能與 iotdb-common.properties 配置文件中的
schema_region_group_extension_policy和data_region_group_extension_policy參數相關,以 DATA_REGION_GROUP_NUM 為例:
若設置data_region_group_extension_policy=CUSTOM,則 DATA_REGION_GROUP_NUM 將作為 Database 擁有的 DataRegionGroup 的數量;
若設置data_region_group_extension_policy=AUTO,則 DATA_REGION_GROUP_NUM 將作為 Database 擁有的 DataRegionGroup 的配額下界,即當該 Database 開始寫入數據時,將至少擁有此數量的 DataRegionGroup。
用戶可以在創建 Database 時設置任意異構參數,或在單機/分布式 IoTDB 運行時調整部分異構參數。
創建 Database 時設置異構參數
用戶可以在創建 Database 時設置上述任意異構參數,SQL 語句如下所示:
CREATE DATABASE prefixPath (WITH databaseAttributeClause (COMMA? databaseAttributeClause)*)?例如:
CREATE DATABASE root.db WITH SCHEMA_REPLICATION_FACTOR=1, DATA_REPLICATION_FACTOR=3, SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;運行時調整異構參數
用戶可以在 IoTDB 運行時調整部分異構參數,SQL 語句如下所示:
ALTER DATABASE prefixPath WITH databaseAttributeClause (COMMA? databaseAttributeClause)*例如:
ALTER DATABASE root.db WITH SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;注意,運行時只能調整下列異構參數:
- SCHEMA_REGION_GROUP_NUM
- DATA_REGION_GROUP_NUM
查看異構數據庫
用戶可以查詢每個 Database 的具體異構配置,SQL 語句如下所示:
SHOW DATABASES DETAILS prefixPath?例如:
IoTDB> SHOW DATABASES DETAILS
+--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+
|Database| TTL|SchemaReplicationFactor|DataReplicationFactor|TimePartitionInterval|SchemaRegionGroupNum|MinSchemaRegionGroupNum|MaxSchemaRegionGroupNum|DataRegionGroupNum|MinDataRegionGroupNum|MaxDataRegionGroupNum|
+--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+
|root.db1| null| 1| 3| 604800000| 0| 1| 1| 0| 2| 2|
|root.db2|86400000| 1| 1| 604800000| 0| 1| 1| 0| 2| 2|
|root.db3| null| 1| 1| 604800000| 0| 1| 1| 0| 2| 2|
+--------+--------+-----------------------+---------------------+---------------------+--------------------+-----------------------+-----------------------+------------------+---------------------+---------------------+
Total line number = 3
It costs 0.058s各列查詢結果依次為:
- 數據庫名稱
- 數據庫的 TTL
- 數據庫的元數據副本數
- 數據庫的數據副本數
- 數據庫的時間分區間隔
- 數據庫當前擁有的 SchemaRegionGroup 數量
- 數據庫需要擁有的最小 SchemaRegionGroup 數量
- 數據庫允許擁有的最大 SchemaRegionGroup 數量
- 數據庫當前擁有的 DataRegionGroup 數量
- 數據庫需要擁有的最小 DataRegionGroup 數量
- 數據庫允許擁有的最大 DataRegionGroup 數量
設備模板管理
IoTDB 支持設備模板功能,實現同類型不同實體的物理量元數據共享,減少元數據內存占用,同時簡化同類型實體的管理。


創建設備模板
創建設備模板的 SQL 語法如下:
CREATE DEVICE TEMPLATE <templateName> ALIGNED? '(' <measurementId> <attributeClauses> [',' <measurementId> <attributeClauses>]+ ')'示例1: 創建包含兩個非對齊序列的元數據模板
IoTDB> create device template t1 (temperature FLOAT encoding=RLE, status BOOLEAN encoding=PLAIN compression=SNAPPY)示例2: 創建包含一組對齊序列的元數據模板
IoTDB> create device template t2 aligned (lat FLOAT encoding=Gorilla, lon FLOAT encoding=Gorilla)其中,物理量 lat 和 lon 是對齊的。
掛載設備模板
元數據模板在創建后,需執行掛載操作,方可用于相應路徑下的序列創建與數據寫入。
掛載模板前,需確保相關數據庫已經創建。
推薦將模板掛載在 database 節點上,不建議將模板掛載到 database 上層的節點上。
模板掛載路徑下禁止創建普通序列,已創建了普通序列的前綴路徑上不允許掛載模板。
掛載元數據模板的 SQL 語句如下所示:
IoTDB> set device template t1 to root.sg1.d1激活設備模板
掛載好設備模板后,且系統開啟自動注冊序列功能的情況下,即可直接進行數據的寫入。例如 database 為 root.sg1,模板 t1 被掛載到了節點 root.sg1.d1,那么可直接向時間序列(如 root.sg1.d1.temperature 和 root.sg1.d1.status)寫入時間序列數據,該時間序列已可被當作正常創建的序列使用。
注意:在插入數據之前或系統未開啟自動注冊序列功能,模板定義的時間序列不會被創建。可以使用如下SQL語句在插入數據前創建時間序列即激活模板:
IoTDB> create timeseries using device template on root.sg1.d1示例: 執行以下語句
IoTDB> set device template t1 to root.sg1.d1
IoTDB> set device template t2 to root.sg1.d2
IoTDB> create timeseries using device template on root.sg1.d1
IoTDB> create timeseries using device template on root.sg1.d2查看此時的時間序列:
show timeseries root.sg1.**+-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression|tags|attributes|deadband|deadband parameters|
+-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+
|root.sg1.d1.temperature| null| root.sg1| FLOAT| RLE| SNAPPY|null| null| null| null|
| root.sg1.d1.status| null| root.sg1| BOOLEAN| PLAIN| SNAPPY|null| null| null| null|
| root.sg1.d2.lon| null| root.sg1| FLOAT| GORILLA| SNAPPY|null| null| null| null|
| root.sg1.d2.lat| null| root.sg1| FLOAT| GORILLA| SNAPPY|null| null| null| null|
+-----------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+查看此時的設備:
show devices root.sg1.**+---------------+---------+---------+
| devices|isAligned| Template|
+---------------+---------+---------+
| root.sg1.d1| false| null|
| root.sg1.d2| true| null|
+---------------+---------+---------+查看設備模板
- 查看所有設備模板
SQL 語句如下所示:
IoTDB> show device templates執行結果如下:
+-------------+
|template name|
+-------------+
| t2|
| t1|
+-------------+- 查看某個設備模板下的物理量
SQL 語句如下所示:
IoTDB> show nodes in device template t1執行結果如下:
+-----------+--------+--------+-----------+
|child nodes|dataType|encoding|compression|
+-----------+--------+--------+-----------+
|temperature| FLOAT| RLE| SNAPPY|
| status| BOOLEAN| PLAIN| SNAPPY|
+-----------+--------+--------+-----------+- 查看掛載了某個設備模板的路徑
IoTDB> show paths set device template t1執行結果如下:
+-----------+
|child paths|
+-----------+
|root.sg1.d1|
+-----------+- 查看使用了某個設備模板的路徑(即模板在該路徑上已激活,序列已創建)
IoTDB> show paths using device template t1執行結果如下:
+-----------+
|child paths|
+-----------+
|root.sg1.d1|
+-----------+解除設備模板
若需刪除模板表示的某一組時間序列,可采用解除模板操作,SQL語句如下所示:
IoTDB> delete timeseries of device template t1 from root.sg1.d1或
IoTDB> deactivate device template t1 from root.sg1.d1解除操作支持批量處理,SQL語句如下所示:
IoTDB> delete timeseries of device template t1 from root.sg1.*, root.sg2.*或
IoTDB> deactivate device template t1 from root.sg1.*, root.sg2.*若解除命令不指定模板名稱,則會將給定路徑涉及的所有模板使用情況均解除。
卸載設備模板
卸載設備模板的 SQL 語句如下所示:
IoTDB> unset device template t1 from root.sg1.d1注意:不支持卸載仍處于激活狀態的模板,需保證執行卸載操作前解除對該模板的所有使用,即刪除所有該模板表示的序列。
刪除設備模板
刪除設備模板的 SQL 語句如下所示:
IoTDB> drop device template t1注意:不支持刪除已經掛載的模板,需在刪除操作前保證該模板卸載成功。
修改設備模板
在需要新增物理量的場景中,可以通過修改設備模板來給所有已激活該模板的設備新增物理量。
修改設備模板的 SQL 語句如下所示:
IoTDB> alter device template t1 add (speed FLOAT encoding=RLE)向已掛載模板的路徑下的設備中寫入數據,若寫入請求中的物理量不在模板中,將自動擴展模板。
時間序列管理
創建時間序列
根據建立的數據模型,我們可以分別在兩個數據庫中創建相應的時間序列。創建時間序列的 SQL 語句如下所示:
IoTDB > create timeseries root.ln.wf01.wt01.status with datatype=BOOLEAN,encoding=PLAIN
IoTDB > create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT,encoding=RLE
IoTDB > create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT,encoding=PLAIN
IoTDB > create timeseries root.ln.wf02.wt02.status with datatype=BOOLEAN,encoding=PLAIN
IoTDB > create timeseries root.sgcc.wf03.wt01.status with datatype=BOOLEAN,encoding=PLAIN
IoTDB > create timeseries root.sgcc.wf03.wt01.temperature with datatype=FLOAT,encoding=RLE從 v0.13 起,可以使用簡化版的 SQL 語句創建時間序列:
IoTDB > create timeseries root.ln.wf01.wt01.status BOOLEAN encoding=PLAIN
IoTDB > create timeseries root.ln.wf01.wt01.temperature FLOAT encoding=RLE
IoTDB > create timeseries root.ln.wf02.wt02.hardware TEXT encoding=PLAIN
IoTDB > create timeseries root.ln.wf02.wt02.status BOOLEAN encoding=PLAIN
IoTDB > create timeseries root.sgcc.wf03.wt01.status BOOLEAN encoding=PLAIN
IoTDB > create timeseries root.sgcc.wf03.wt01.temperature FLOAT encoding=RLE需要注意的是,當創建時間序列時指定的編碼方式與數據類型不對應時,系統會給出相應的錯誤提示,如下所示:
IoTDB> create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN, ENCODING=TS_2DIFF
error: encoding TS_2DIFF does not support BOOLEAN詳細的數據類型與編碼方式的對應列表請參見 編碼方式。
創建對齊時間序列
創建一組對齊時間序列的SQL語句如下所示:
IoTDB> CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT encoding=PLAIN compressor=SNAPPY, longitude FLOAT encoding=PLAIN compressor=SNAPPY)一組對齊序列中的序列可以有不同的數據類型、編碼方式以及壓縮方式。
對齊的時間序列也支持設置別名、標簽、屬性。
刪除時間序列
我們可以使用(DELETE | DROP) TimeSeries <PathPattern>語句來刪除我們之前創建的時間序列。SQL 語句如下所示:
IoTDB> delete timeseries root.ln.wf01.wt01.status
IoTDB> delete timeseries root.ln.wf01.wt01.temperature, root.ln.wf02.wt02.hardware
IoTDB> delete timeseries root.ln.wf02.*
IoTDB> drop timeseries root.ln.wf02.*查看時間序列
SHOW LATEST? TIMESERIES pathPattern? timeseriesWhereClause? limitClause?
SHOW TIMESERIES 中可以有四種可選的子句,查詢結果為這些時間序列的所有信息
時間序列信息具體包括:時間序列路徑名,database,Measurement 別名,數據類型,編碼方式,壓縮方式,屬性和標簽。
示例:
SHOW TIMESERIES
展示系統中所有的時間序列信息
SHOW TIMESERIES <
Path>返回給定路徑的下的所有時間序列信息。其中
Path需要為一個時間序列路徑或路徑模式。例如,分別查看root路徑和root.ln路徑下的時間序列,SQL 語句如下所示:
IoTDB> show timeseries root.**
IoTDB> show timeseries root.ln.**執行結果分別為:
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
| timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
|root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.sgcc.wf03.wt01.status| null| root.sgcc| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
| root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null|
| root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY| null| null| null| null|
| root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
| root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
Total line number = 7
It costs 0.016s
+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression|tags|attributes|deadband|deadband parameters|
+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+
| root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY|null| null| null| null|
| root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| null| null|
|root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY|null| null| null| null|
| root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|null| null| null| null|
+-----------------------------+-----+-------------+--------+--------+-----------+----+----------+--------+-------------------+
Total line number = 4
It costs 0.004sSHOW TIMESERIES LIMIT INT OFFSET INT
只返回從指定下標開始的結果,最大返回條數被 LIMIT 限制,用于分頁查詢。例如:
show timeseries root.ln.** limit 10 offset 10SHOW TIMESERIES WHERE TIMESERIES contains 'containStr'
對查詢結果集根據 timeseries 名稱進行字符串模糊匹配過濾。例如:
show timeseries root.ln.** where timeseries contains 'wf01.wt'執行結果為:
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
| timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
| root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
Total line number = 2
It costs 0.016sSHOW TIMESERIES WHERE DataType=type
對查詢結果集根據時間序列數據類型進行過濾。例如:
show timeseries root.ln.** where dataType=FLOAT執行結果為:
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
| timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
|root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null|
| root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
Total line number = 3
It costs 0.016sSHOW TIMESERIES WHERE TAGS(KEY) = VALUE
SHOW TIMESERIES WHERE TAGS(KEY) CONTAINS VALUE
對查詢結果集根據標簽進行過濾。例如:
show timeseries root.ln.** where TAGS(unit)='c'
show timeseries root.ln.** where TAGS(description) contains 'test1'執行結果分別為:
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters|
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
|root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY|{"unit":"c"}| null| null| null|
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
Total line number = 1
It costs 0.005s
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters|
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
|root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|{"description":"test1"}| null| null| null|
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
Total line number = 1
It costs 0.004sSHOW LATEST TIMESERIES
表示查詢出的時間序列需要按照最近插入時間戳降序排列
需要注意的是,當查詢路徑不存在時,系統會返回 0 條時間序列。
統計時間序列總數
IoTDB 支持使用COUNT TIMESERIES<Path>來統計一條路徑中的時間序列個數。SQL 語句如下所示:
- 可以通過
WHERE條件對時間序列名稱進行字符串模糊匹配,語法為:COUNT TIMESERIES <Path> WHERE TIMESERIES contains 'containStr'。 - 可以通過
WHERE條件對時間序列數據類型進行過濾,語法為:COUNT TIMESERIES <Path> WHERE DataType=<DataType>'。 - 可以通過
WHERE條件對標簽點進行過濾,語法為:COUNT TIMESERIES <Path> WHERE TAGS(key)='value'或COUNT TIMESERIES <Path> WHERE TAGS(key) contains 'value'。 - 可以通過定義
LEVEL來統計指定層級下的時間序列個數。這條語句可以用來統計每一個設備下的傳感器數量,語法為:COUNT TIMESERIES <Path> GROUP BY LEVEL=<INTEGER>。
IoTDB > COUNT TIMESERIES root.**
IoTDB > COUNT TIMESERIES root.ln.**
IoTDB > COUNT TIMESERIES root.ln.*.*.status
IoTDB > COUNT TIMESERIES root.ln.wf01.wt01.status
IoTDB > COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc'
IoTDB > COUNT TIMESERIES root.** WHERE DATATYPE = INT64
IoTDB > COUNT TIMESERIES root.** WHERE TAGS(unit) contains 'c'
IoTDB > COUNT TIMESERIES root.** WHERE TAGS(unit) = 'c'
IoTDB > COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc' group by level = 1例如有如下時間序列(可以使用show timeseries展示所有時間序列):
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
| timeseries| alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
|root.sgcc.wf03.wt01.temperature| null| root.sgcc| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.sgcc.wf03.wt01.status| null| root.sgcc| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
| root.turbine.d1.s1|newAlias| root.turbine| FLOAT| RLE| SNAPPY|{"newTag1":"newV1","tag4":"v4","tag3":"v3"}|{"attr2":"v2","attr1":"newV1","attr4":"v4","attr3":"v3"}| null| null|
| root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY| {"unit":"c"}| null| null| null|
| root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| {"description":"test1"}| null| null| null|
| root.ln.wf01.wt01.temperature| null| root.ln| FLOAT| RLE| SNAPPY| null| null| null| null|
| root.ln.wf01.wt01.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY| null| null| null| null|
+-------------------------------+--------+-------------+--------+--------+-----------+-------------------------------------------+--------------------------------------------------------+--------+-------------------+
Total line number = 7
It costs 0.004s那么 Metadata Tree 如下所示:

可以看到,root被定義為LEVEL=0。那么當你輸入如下語句時:
IoTDB > COUNT TIMESERIES root.** GROUP BY LEVEL=1
IoTDB > COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2
IoTDB > COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=2你將得到以下結果:
IoTDB> COUNT TIMESERIES root.** GROUP BY LEVEL=1
+------------+-----------------+
| column|count(timeseries)|
+------------+-----------------+
| root.sgcc| 2|
|root.turbine| 1|
| root.ln| 4|
+------------+-----------------+
Total line number = 3
It costs 0.002s
IoTDB > COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2
+------------+-----------------+
| column|count(timeseries)|
+------------+-----------------+
|root.ln.wf02| 2|
|root.ln.wf01| 2|
+------------+-----------------+
Total line number = 2
It costs 0.002s
IoTDB > COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=2
+------------+-----------------+
| column|count(timeseries)|
+------------+-----------------+
|root.ln.wf01| 2|
+------------+-----------------+
Total line number = 1
It costs 0.002s注意:時間序列的路徑只是過濾條件,與 level 的定義無關。
活躍時間序列查詢
我們在原有的時間序列查詢和統計上添加新的WHERE時間過濾條件,可以得到在指定時間范圍中存在數據的時間序列。
需要注意的是, 在帶有時間過濾的元數據查詢中并不考慮視圖的存在,只考慮TsFile中實際存儲的時間序列。
一個使用樣例如下:
IoTDB> insert into root.sg.data(timestamp, s1,s2) values(15000, 1, 2);
IoTDB> insert into root.sg.data2(timestamp, s1,s2) values(15002, 1, 2);
IoTDB> insert into root.sg.data3(timestamp, s1,s2) values(16000, 1, 2);
IoTDB> show timeseries;
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
| Timeseries|Alias|Database|DataType|Encoding|Compression|Tags|Attributes|Deadband|DeadbandParameters|ViewType|
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
| root.sg.data.s1| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
| root.sg.data.s2| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data3.s1| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data3.s2| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data2.s1| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data2.s2| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
IoTDB> show timeseries where time >= 15000 and time < 16000;
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
| Timeseries|Alias|Database|DataType|Encoding|Compression|Tags|Attributes|Deadband|DeadbandParameters|ViewType|
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
| root.sg.data.s1| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
| root.sg.data.s2| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data2.s1| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
|root.sg.data2.s2| null| root.sg| FLOAT| GORILLA| LZ4|null| null| null| null| BASE|
+----------------+-----+--------+--------+--------+-----------+----+----------+--------+------------------+--------+
IoTDB> count timeseries where time >= 15000 and time < 16000;
+-----------------+
|count(timeseries)|
+-----------------+
| 4|
+-----------------+關于活躍時間序列的定義,能通過正常查詢查出來的數據就是活躍數據,也就是說插入但被刪除的時間序列不在考慮范圍內。
標簽點管理
我們可以在創建時間序列的時候,為它添加別名和額外的標簽和屬性信息。
標簽和屬性的區別在于:
- 標簽可以用來查詢時間序列路徑,會在內存中維護標點到時間序列路徑的倒排索引:標簽 -> 時間序列路徑
- 屬性只能用時間序列路徑來查詢:時間序列路徑 -> 屬性
所用到的擴展的創建時間序列的 SQL 語句如下所示:
create timeseries root.turbine.d1.s1(temprature) with datatype=FLOAT, encoding=RLE, compression=SNAPPY tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2)括號里的temprature是s1這個傳感器的別名。
我們可以在任何用到s1的地方,將其用temprature代替,這兩者是等價的。
IoTDB 同時支持在查詢語句中使用 AS 函數設置別名。二者的區別在于:AS 函數設置的別名用于替代整條時間序列名,且是臨時的,不與時間序列綁定;而上文中的別名只作為傳感器的別名,與其綁定且可與原傳感器名等價使用。
注意:額外的標簽和屬性信息總的大小不能超過
tag_attribute_total_size.
- 標簽點屬性更新
創建時間序列后,我們也可以對其原有的標簽點屬性進行更新,主要有以下六種更新方式: - 重命名標簽或屬性
ALTER timeseries root.turbine.d1.s1 RENAME tag1 TO newTag1- 重新設置標簽或屬性的值
ALTER timeseries root.turbine.d1.s1 SET newTag1=newV1, attr1=newV1- 刪除已經存在的標簽或屬性
ALTER timeseries root.turbine.d1.s1 DROP tag1, tag2- 添加新的標簽
ALTER timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4- 添加新的屬性
ALTER timeseries root.turbine.d1.s1 ADD ATTRIBUTES attr3=v3, attr4=v4- 更新插入別名,標簽和屬性
如果該別名,標簽或屬性原來不存在,則插入,否則,用新值更新原來的舊值
ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag2=newV2, tag3=v3) ATTRIBUTES(attr3=v3, attr4=v4)- 使用標簽作為過濾條件查詢時間序列,使用 TAGS(tagKey) 來標識作為過濾條件的標簽
SHOW TIMESERIES (<`PathPattern`>)? timeseriesWhereClause返回給定路徑的下的所有滿足條件的時間序列信息,SQL 語句如下所示:
ALTER timeseries root.ln.wf02.wt02.hardware ADD TAGS unit=c
ALTER timeseries root.ln.wf02.wt02.status ADD TAGS description=test1
show timeseries root.ln.** where TAGS(unit)='c'
show timeseries root.ln.** where TAGS(description) contains 'test1'執行結果分別為:
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters|
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
|root.ln.wf02.wt02.hardware| null| root.ln| TEXT| PLAIN| SNAPPY|{"unit":"c"}| null| null| null|
+--------------------------+-----+-------------+--------+--------+-----------+------------+----------+--------+-------------------+
Total line number = 1
It costs 0.005s
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags|attributes|deadband|deadband parameters|
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
|root.ln.wf02.wt02.status| null| root.ln| BOOLEAN| PLAIN| SNAPPY|{"description":"test1"}| null| null| null|
+------------------------+-----+-------------+--------+--------+-----------+-----------------------+----------+--------+-------------------+
Total line number = 1
It costs 0.004s- 使用標簽作為過濾條件統計時間序列數量
COUNT TIMESERIES (<`PathPattern`>)? timeseriesWhereClause
COUNT TIMESERIES (<`PathPattern`>)? timeseriesWhereClause GROUP BY LEVEL=<INTEGER>返回給定路徑的下的所有滿足條件的時間序列的數量,SQL 語句如下所示:
count timeseries
count timeseries root.** where TAGS(unit)='c'
count timeseries root.** where TAGS(unit)='c' group by level = 2執行結果分別為:
IoTDB> count timeseries
+-----------------+
|count(timeseries)|
+-----------------+
| 6|
+-----------------+
Total line number = 1
It costs 0.019s
IoTDB> count timeseries root.** where TAGS(unit)='c'
+-----------------+
|count(timeseries)|
+-----------------+
| 2|
+-----------------+
Total line number = 1
It costs 0.020s
IoTDB> count timeseries root.** where TAGS(unit)='c' group by level = 2
+--------------+-----------------+
| column|count(timeseries)|
+--------------+-----------------+
| root.ln.wf02| 2|
| root.ln.wf01| 0|
|root.sgcc.wf03| 0|
+--------------+-----------------+
Total line number = 3
It costs 0.011s注意,現在我們只支持一個查詢條件,要么是等值條件查詢,要么是包含條件查詢。當然 where 子句中涉及的必須是標簽值,而不能是屬性值。
創建對齊時間序列
create aligned timeseries root.sg1.d1(s1 INT32 tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2), s2 DOUBLE tags(tag3=v3, tag4=v4) attributes(attr3=v3, attr4=v4))執行結果如下:
IoTDB> show timeseries
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+
|root.sg1.d1.s1| null| root.sg1| INT32| RLE| SNAPPY|{"tag1":"v1","tag2":"v2"}|{"attr2":"v2","attr1":"v1"}| null| null|
|root.sg1.d1.s2| null| root.sg1| DOUBLE| GORILLA| SNAPPY|{"tag4":"v4","tag3":"v3"}|{"attr4":"v4","attr3":"v3"}| null| null|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+支持查詢:
IoTDB> show timeseries where TAGS(tag1)='v1'
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+
| timeseries|alias| database|dataType|encoding|compression| tags| attributes|deadband|deadband parameters|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+
|root.sg1.d1.s1| null| root.sg1| INT32| RLE| SNAPPY|{"tag1":"v1","tag2":"v2"}|{"attr2":"v2","attr1":"v1"}| null| null|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+上述對時間序列標簽、屬性的更新等操作都支持。
路徑查詢
查看路徑的所有子路徑
SHOW CHILD PATHS pathPattern可以查看此路徑模式所匹配的所有路徑的下一層的所有路徑和它對應的節點類型,即pathPattern.*所匹配的路徑及其節點類型。
節點類型:ROOT -> SG INTERNAL -> DATABASE -> INTERNAL -> DEVICE -> TIMESERIES
示例:
- 查詢 root.ln 的下一層:show child paths root.ln
+------------+----------+
| child paths|node types|
+------------+----------+
|root.ln.wf01| INTERNAL|
|root.ln.wf02| INTERNAL|
+------------+----------+
Total line number = 2
It costs 0.002s- 查詢形如 root.xx.xx.xx 的路徑:show child paths root.*.*
+---------------+
| child paths|
+---------------+
|root.ln.wf01.s1|
|root.ln.wf02.s2|
+---------------+查看路徑的下一級節點
SHOW CHILD NODES pathPattern可以查看此路徑模式所匹配的節點的下一層的所有節點。
示例:
- 查詢 root 的下一層:show child nodes root
+------------+
| child nodes|
+------------+
| ln|
+------------+- 查詢 root.ln 的下一層 :show child nodes root.ln
+------------+
| child nodes|
+------------+
| wf01|
| wf02|
+------------+統計節點數
IoTDB 支持使用COUNT NODES <PathPattern> LEVEL=<INTEGER>來統計當前 Metadata
樹下滿足某路徑模式的路徑中指定層級的節點個數。這條語句可以用來統計帶有特定采樣點的設備數。例如:
IoTDB > COUNT NODES root.** LEVEL=2
IoTDB > COUNT NODES root.ln.** LEVEL=2
IoTDB > COUNT NODES root.ln.wf01.* LEVEL=3
IoTDB > COUNT NODES root.**.temperature LEVEL=3對于上面提到的例子和 Metadata Tree,你可以獲得如下結果:
+------------+
|count(nodes)|
+------------+
| 4|
+------------+
Total line number = 1
It costs 0.003s
+------------+
|count(nodes)|
+------------+
| 2|
+------------+
Total line number = 1
It costs 0.002s
+------------+
|count(nodes)|
+------------+
| 1|
+------------+
Total line number = 1
It costs 0.002s
+------------+
|count(nodes)|
+------------+
| 2|
+------------+
Total line number = 1
It costs 0.002s注意:時間序列的路徑只是過濾條件,與 level 的定義無關。
查看設備
- SHOW DEVICES pathPattern? (WITH DATABASE)? devicesWhereClause? limitClause?
與 Show Timeseries 相似,IoTDB 目前也支持兩種方式查看設備。
SHOW DEVICES語句顯示當前所有的設備信息,等價于SHOW DEVICES root.**。SHOW DEVICES <PathPattern>語句規定了PathPattern,返回給定的路徑模式所匹配的設備信息。WHERE條件中可以使用DEVICE contains 'xxx',根據 device 名稱進行模糊查詢。WHERE條件中可以使用TEMPLATE = 'xxx',TEMPLATE != 'xxx',根據 template 名稱進行過濾查詢。WHERE條件中可以使用TEMPLATE is null,TEMPLATE is not null,根據 template 是否為null(null 表示沒激活)進行過濾查詢。
SQL 語句如下所示:
IoTDB> show devices
IoTDB> show devices root.ln.**
IoTDB> show devices root.ln.** where device contains 't'
IoTDB> show devices root.ln.** where template = 't1'
IoTDB> show devices root.ln.** where template is null
IoTDB> show devices root.ln.** where template != 't1'
IoTDB> show devices root.ln.** where template is not null你可以獲得如下數據:
+-------------------+---------+---------+
| devices|isAligned| Template|
+-------------------+---------+---------+
| root.ln.wf01.wt01| false| t1|
| root.ln.wf02.wt02| false| null|
|root.sgcc.wf03.wt01| false| null|
| root.turbine.d1| false| null|
+-------------------+---------+---------+
Total line number = 4
It costs 0.002s
+-----------------+---------+---------+
| devices|isAligned| Template|
+-----------------+---------+---------+
|root.ln.wf01.wt01| false| t1|
|root.ln.wf02.wt02| false| null|
+-----------------+---------+---------+
Total line number = 2
It costs 0.001s
+-----------------+---------+---------+
| devices|isAligned| Template|
+-----------------+---------+---------+
|root.ln.wf01.wt01| false| t1|
|root.ln.wf02.wt02| false| null|
+-----------------+---------+---------+
Total line number = 2
It costs 0.001s
+-----------------+---------+---------+
| devices|isAligned| Template|
+-----------------+---------+---------+
|root.ln.wf01.wt01| false| t1|
+-----------------+---------+---------+
Total line number = 1
It costs 0.001s
+-----------------+---------+---------+
| devices|isAligned| Template|
+-----------------+---------+---------+
|root.ln.wf02.wt02| false| null|
+-----------------+---------+---------+
Total line number = 1
It costs 0.001s其中,isAligned表示該設備下的時間序列是否對齊,Template顯示著該設備所激活的模板名,null 表示沒有激活模板。
查看設備及其 database 信息,可以使用 SHOW DEVICES WITH DATABASE 語句。
SHOW DEVICES WITH DATABASE語句顯示當前所有的設備信息和其所在的 database,等價于SHOW DEVICES root.**。SHOW DEVICES <PathPattern> WITH DATABASE語句規定了PathPattern,返回給定的路徑模式所匹配的設備信息和其所在的 database。
SQL 語句如下所示:
IoTDB> show devices with database
IoTDB> show devices root.ln.** with database你可以獲得如下數據:
+-------------------+-------------+---------+---------+
| devices| database|isAligned| Template|
+-------------------+-------------+---------+---------+
| root.ln.wf01.wt01| root.ln| false| t1|
| root.ln.wf02.wt02| root.ln| false| null|
|root.sgcc.wf03.wt01| root.sgcc| false| null|
| root.turbine.d1| root.turbine| false| null|
+-------------------+-------------+---------+---------+
Total line number = 4
It costs 0.003s
+-----------------+-------------+---------+---------+
| devices| database|isAligned| Template|
+-----------------+-------------+---------+---------+
|root.ln.wf01.wt01| root.ln| false| t1|
|root.ln.wf02.wt02| root.ln| false| null|
+-----------------+-------------+---------+---------+
Total line number = 2
It costs 0.001s統計設備數量
- COUNT DEVICES <PathPattern>
上述語句用于統計設備的數量,同時允許指定PathPattern 用于統計匹配該PathPattern 的設備數量
SQL 語句如下所示:
IoTDB> show devices
IoTDB> count devices
IoTDB> count devices root.ln.**你可以獲得如下數據:
+-------------------+---------+---------+
| devices|isAligned| Template|
+-------------------+---------+---------+
|root.sgcc.wf03.wt03| false| null|
| root.turbine.d1| false| null|
| root.ln.wf02.wt02| false| null|
| root.ln.wf01.wt01| false| t1|
+-------------------+---------+---------+
Total line number = 4
It costs 0.024s
+--------------+
|count(devices)|
+--------------+
| 4|
+--------------+
Total line number = 1
It costs 0.004s
+--------------+
|count(devices)|
+--------------+
| 2|
+--------------+
Total line number = 1
It costs 0.004s活躍設備查詢
和活躍時間序列一樣,我們可以在查看和統計設備的基礎上添加時間過濾條件來查詢在某段時間內存在數據的活躍設備。這里活躍的定義與活躍時間序列相同,使用樣例如下:
IoTDB> insert into root.sg.data(timestamp, s1,s2) values(15000, 1, 2);
IoTDB> insert into root.sg.data2(timestamp, s1,s2) values(15002, 1, 2);
IoTDB> insert into root.sg.data3(timestamp, s1,s2) values(16000, 1, 2);
IoTDB> show devices;
+-------------------+---------+
| devices|isAligned|
+-------------------+---------+
| root.sg.data| false|
| root.sg.data2| false|
| root.sg.data3| false|
+-------------------+---------+
IoTDB> show devices where time >= 15000 and time < 16000;
+-------------------+---------+
| devices|isAligned|
+-------------------+---------+
| root.sg.data| false|
| root.sg.data2| false|
+-------------------+---------+
IoTDB> count devices where time >= 15000 and time < 16000;
+--------------+
|count(devices)|
+--------------+
| 2|
+--------------+