SQL Manual
SQL Manual
1. DATABASE MANAGEMENT
For more details, see document Operate-Metadata.
1.1 Create Database
create database root.ln;
create database root.sgcc;1.2 Show Databases
SHOW DATABASES;
SHOW DATABASES root.**;1.3 Delete Database
DELETE DATABASE root.ln;
DELETE DATABASE root.sgcc;
// delete all data, all timeseries and all databases;
DELETE DATABASE root.**;1.4 Count Databases
count databases;
count databases root.*;
count databases root.sgcc.*;
count databases root.sgcc;1.5 Setting up heterogeneous databases (Advanced operations)
Set heterogeneous parameters when creating a Database
CREATE DATABASE root.db WITH SCHEMA_REPLICATION_FACTOR=1, DATA_REPLICATION_FACTOR=3, SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;Adjust heterogeneous parameters at run time
ALTER DATABASE root.db WITH SCHEMA_REGION_GROUP_NUM=1, DATA_REGION_GROUP_NUM=2;Show heterogeneous databases
SHOW DATABASES DETAILS;1.6 TTL
Set TTL
set ttl to root.ln 3600000;
set ttl to root.sgcc.** 3600000;
set ttl to root.** 3600000;Unset TTL
unset ttl from root.ln;
unset ttl from root.sgcc.**;
unset ttl from root.**;Show TTL
SHOW ALL TTL;
SHOW TTL ON StorageGroupNames;
SHOW DEVICES;2. TIMESERIES MANAGEMENT
For more details, see document Operate-Metadata.
2.1 Create Timeseries
create timeseries root.ln.wf01.wt01.status with datatype=BOOLEAN;
create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT;
create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT;
create timeseries root.ln.wf02.wt02.status with datatype=BOOLEAN;
create timeseries root.sgcc.wf03.wt01.status with datatype=BOOLEAN;
create timeseries root.sgcc.wf03.wt01.temperature with datatype=FLOAT;- From v0.13, you can use a simplified version of the SQL statements to create timeseries:
create timeseries root.ln.wf01.wt01.status with datatype=BOOLEAN;
create timeseries root.ln.wf01.wt01.temperature with datatype=FLOAT;
create timeseries root.ln.wf02.wt02.hardware with datatype=TEXT;
create timeseries root.ln.wf02.wt02.status with datatype=BOOLEAN;
create timeseries root.sgcc.wf03.wt01.status with datatype=BOOLEAN;
create timeseries root.sgcc.wf03.wt01.temperature with datatype=FLOAT;- Notice that when in the CREATE TIMESERIES statement the encoding method conflicts with the data type, the system gives the corresponding error prompt as shown below:
create timeseries root.ln.wf02.wt02.status WITH DATATYPE=BOOLEAN;
error: encoding TS_2DIFF does not support BOOLEAN2.2 Create Aligned Timeseries
CREATE ALIGNED TIMESERIES root.ln.wf01.GPS(latitude FLOAT , longitude FLOAT);2.3 Modify Timeseries Data Type
Supported since V2.0.8.2
ALTER TIMESERIES root.ln.wf01.wt01.temperature set data type DOUBLE2.4 Modify Timeseries Name
This statement is supported from V2.0.8.2 onwards
ALTER TIMESERIES root.ln.wf01.wt01.temperature RENAME TO root.newln.newwf.newwt.temperature2.5 Delete Timeseries
delete timeseries root.ln.wf01.wt01.status;
delete timeseries root.ln.wf01.wt01.temperature, root.ln.wf02.wt02.hardware;
delete timeseries root.ln.wf02.*;
drop timeseries root.ln.wf02.*;2.6 Show Timeseries
show timeseries root.**;
show timeseries root.ln.**;
show timeseries root.ln.** limit 10 offset 10;
show timeseries root.ln.** where timeseries contains 'wf01.wt';
show timeseries root.ln.** where dataType=FLOAT;
show timeseries root.ln.** where time>=2017-01-01T00:00:00 and time<=2017-11-01T16:26:00;
show latest timeseries;
show invalid timeseries; -- This statement is supported from V2.0.8.2 onwards;2.7 Count Timeseries
COUNT TIMESERIES root.**;
COUNT TIMESERIES root.ln.**;
COUNT TIMESERIES root.ln.*.*.status;
COUNT TIMESERIES root.ln.wf01.wt01.status;
COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc';
COUNT TIMESERIES root.** WHERE DATATYPE = INT64;
COUNT TIMESERIES root.** WHERE TAGS(unit) contains 'c';
COUNT TIMESERIES root.** WHERE TAGS(unit) = 'c';
COUNT TIMESERIES root.** WHERE TIMESERIES contains 'sgcc' group by level = 1;
COUNT TIMESERIES root.** GROUP BY LEVEL=1;
COUNT TIMESERIES root.ln.** GROUP BY LEVEL=2;
COUNT TIMESERIES root.ln.wf01.* GROUP BY LEVEL=2;2.8 Tag and Attribute Management
create timeseries root.turbine.d1.s1(temprature) with datatype=FLOAT tags(tag1=v1, tag2=v2) attributes(attr1=v1, attr2=v2);- Rename the tag/attribute key
ALTER timeseries root.turbine.d1.s1 RENAME tag1 TO newTag1;- Reset the tag/attribute value
ALTER timeseries root.turbine.d1.s1 SET newTag1=newV1, attr1=newV1;- Delete the existing tag/attribute
ALTER timeseries root.turbine.d1.s1 DROP tag1, tag2;- Add new tags
ALTER timeseries root.turbine.d1.s1 ADD TAGS tag3=v3, tag4=v4;- Add new attributes
ALTER timeseries root.turbine.d1.s1 ADD ATTRIBUTES attr3=v3, attr4=v4;- Upsert alias, tags and attributes
add alias or a new key-value if the alias or key doesn't exist, otherwise, update the old one with new value.
ALTER timeseries root.turbine.d1.s1 UPSERT ALIAS=newAlias TAGS(tag3=v3, tag4=v4) ATTRIBUTES(attr3=v3, attr4=v4);- Show timeseries using tags. Use TAGS(tagKey) to identify the tags used as filter key
SHOW TIMESERIES (<`PathPattern`>)? timeseriesWhereClause;returns all the timeseries information that satisfy the where condition and match the pathPattern. SQL statements are as follows:
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';- count timeseries using tags
COUNT TIMESERIES (<`PathPattern`>)? timeseriesWhereClause;
COUNT TIMESERIES (<`PathPattern`>)? timeseriesWhereClause GROUP BY LEVEL=<INTEGER>;returns all the number of timeseries that satisfy the where condition and match the pathPattern. SQL statements are as follows:
count timeseries;
count timeseries root.** where TAGS(unit)='c';
count timeseries root.** where TAGS(unit)='c' group by level = 2;create aligned timeseries
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));The execution result is as follows:
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|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+Support query:
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|
+--------------+-----+-------------+--------+--------+-----------+-------------------------+---------------------------+--------+-------------------+The above operations are supported for timeseries tag, attribute updates, etc.
3. NODE MANAGEMENT
For more details, see document Operate-Metadata.
3.1 Show Child Paths
SHOW CHILD PATHS pathPattern;3.2 Show Child Nodes
SHOW CHILD NODES pathPattern;3.3 Count Nodes
COUNT NODES root.** LEVEL=2;
COUNT NODES root.ln.** LEVEL=2;
COUNT NODES root.ln.wf01.** LEVEL=3;
COUNT NODES root.**.temperature LEVEL=3;3.4 Show Devices
show devices;
show devices root.ln.**;
show devices root.ln.** where device contains 't';
show devices with database;
show devices root.ln.** with database;3.5 Count Devices
show devices;
count devices;
count devices root.ln.**;4. INSERT & LOAD DATA
4.1 Insert Data
For more details, see document Write-Data.
Use of INSERT Statements
- Insert Single Timeseries
insert into root.ln.wf02.wt02(timestamp,status) values(1,true);
insert into root.ln.wf02.wt02(timestamp,hardware) values(1, 'v1');- Insert Multiple Timeseries
insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (2, false, 'v2');
insert into root.ln.wf02.wt02(timestamp, status, hardware) VALUES (3, false, 'v3'),(4, true, 'v4');- Use the Current System Timestamp as the Timestamp of the Data Point
insert into root.ln.wf02.wt02(status, hardware) values (false, 'v2');Insert Data Into Aligned Timeseries
create aligned timeseries root.sg1.d1(s1 INT32, s2 DOUBLE);
insert into root.sg1.d1(time, s1, s2) aligned values(1, 1, 1);
insert into root.sg1.d1(time, s1, s2) aligned values(2, 2, 2), (3, 3, 3);
select * from root.sg1.d1;4.2 Load External TsFile Tool
For more details, see document Data Import.
Load with SQL
- Load a single tsfile by specifying a file path (absolute path).
load '/Users/Desktop/data/1575028885956-101-0.tsfile'load '/Users/Desktop/data/1575028885956-101-0.tsfile' sglevel=1load '/Users/Desktop/data/1575028885956-101-0.tsfile' onSuccess=deleteload '/Users/Desktop/data/1575028885956-101-0.tsfile' sglevel=1 onSuccess=delete
- Load a batch of files by specifying a folder path (absolute path).
load '/Users/Desktop/data'load '/Users/Desktop/data' sglevel=1load '/Users/Desktop/data' onSuccess=deleteload '/Users/Desktop/data' sglevel=1 onSuccess=delete
Load with Script
./load-rewrite.bat -f D:\IoTDB\data -h 192.168.0.101 -p 6667 -u root -pw root5. DELETE DATA
For more details, see document Write-Delete-Data.
5.1 Delete Single Timeseries
delete from root.ln.wf02.wt02.status where time<=2017-11-01T16:26:00;
delete from root.ln.wf02.wt02.status where time>=2017-01-01T00:00:00 and time<=2017-11-01T16:26:00;
delete from root.ln.wf02.wt02.status where time < 10;
delete from root.ln.wf02.wt02.status where time <= 10;
delete from root.ln.wf02.wt02.status where time < 20 and time > 10;
delete from root.ln.wf02.wt02.status where time <= 20 and time >= 10;
delete from root.ln.wf02.wt02.status where time > 20;
delete from root.ln.wf02.wt02.status where time >= 20;
delete from root.ln.wf02.wt02.status where time = 20;
delete from root.ln.wf02.wt02.status where time > 4 or time < 0;
Msg: 303: Check metadata error: For delete statement, where clause can only contain atomic;
expressions like : time > XXX, time <= XXX, or two atomic expressions connected by 'AND';
delete from root.ln.wf02.wt02.status;5.2 Delete Multiple Timeseries
delete from root.ln.wf02.wt02 where time <= 2017-11-01T16:26:00;
delete from root.ln.wf02.wt02.* where time <= 2017-11-01T16:26:00;
delete from root.ln.wf03.wt02.status where time < now();
Msg: The statement is executed successfully.5.3 Delete Time Partition (experimental)
DELETE PARTITION root.ln 0,1,2;6. QUERY DATA
For more details, see document Query-Data.
SELECT [LAST] selectExpr [, selectExpr] ...
[INTO intoItem [, intoItem] ...]
FROM prefixPath [, prefixPath] ...
[WHERE whereCondition]
[GROUP BY {
([startTime, endTime), interval [, slidingStep]) |
LEVEL = levelNum [, levelNum] ... |
TAGS(tagKey [, tagKey] ... ) |
VARIATION(expression[,delta][,ignoreNull=true/false]) |
CONDITION(expression,[keep>/>=/=/</<=]threshold[,ignoreNull=true/false]) |
SESSION(timeInterval) |
COUNT(expression, size[,ignoreNull=true/false])
}]
[HAVING havingCondition]
[ORDER BY sortKey {ASC | DESC}]
[FILL ({PREVIOUS | LINEAR | constant} (, interval=DURATION_LITERAL)?)]
[SLIMIT seriesLimit] [SOFFSET seriesOffset]
[LIMIT rowLimit] [OFFSET rowOffset]
[ALIGN BY {TIME | DEVICE}]6.1 Basic Examples
Select a Column of Data Based on a Time Interval
select temperature from root.ln.wf01.wt01 where time < 2017-11-01T00:08:00.000;Select Multiple Columns of Data Based on a Time Interval
select status, temperature from root.ln.wf01.wt01 where time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000;Select Multiple Columns of Data for the Same Device According to Multiple Time Intervals
select status,temperature from root.ln.wf01.wt01 where (time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000) or (time >= 2017-11-01T16:35:00.000 and time <= 2017-11-01T16:37:00.000);Choose Multiple Columns of Data for Different Devices According to Multiple Time Intervals
select wf01.wt01.status,wf02.wt02.hardware from root.ln where (time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000) or (time >= 2017-11-01T16:35:00.000 and time <= 2017-11-01T16:37:00.000);Order By Time Query
select * from root.ln.** where time > 1 order by time desc limit 10;6.2 SELECT CLAUSE
Use Alias
select s1 as temperature, s2 as speed from root.ln.wf01.wt01;Nested Expressions
Nested Expressions with Time Series Query
select a,
b,
((a + 1) * 2 - 1) % 2 + 1.5,
sin(a + sin(a + sin(b))),
-(a + b) * (sin(a + b) * sin(a + b) + cos(a + b) * cos(a + b)) + 1
from root.sg1;
select (a + b) * 2 + sin(a) from root.sg;
select (a + *) / 2 from root.sg1;
select (a + b) * 3 from root.sg, root.ln;Nested Expressions query with aggregations
select avg(temperature),
sin(avg(temperature)),
avg(temperature) + 1,
-sum(hardware),
avg(temperature) + sum(hardware)
from root.ln.wf01.wt01;
select avg(*),
(avg(*) + 1) * 3 / 2 -1
from root.sg1;
select avg(temperature),
sin(avg(temperature)),
avg(temperature) + 1,
-sum(hardware),
avg(temperature) + sum(hardware) as custom_sum
from root.ln.wf01.wt01
GROUP BY([10, 90), 10ms);Last Query
select last status from root.ln.wf01.wt01;
select last status, temperature from root.ln.wf01.wt01 where time >= 2017-11-07T23:50:00;
select last * from root.ln.wf01.wt01 order by timeseries desc;
select last * from root.ln.wf01.wt01 order by dataType desc;6.3 WHERE CLAUSE
Time Filter
select s1 from root.sg1.d1 where time > 2022-01-01T00:05:00.000;
select s1 from root.sg1.d1 where time = 2022-01-01T00:05:00.000;
select s1 from root.sg1.d1 where time >= 2022-01-01T00:05:00.000 and time < 2017-11-01T00:12:00.000;Value Filter
select temperature from root.sg1.d1 where temperature > 36.5;
select status from root.sg1.d1 where status = true;
select temperature from root.sg1.d1 where temperature between 36.5 and 40;
select temperature from root.sg1.d1 where temperature not between 36.5 and 40;
select code from root.sg1.d1 where code in ('200', '300', '400', '500');
select code from root.sg1.d1 where code not in ('200', '300', '400', '500');
select code from root.sg1.d1 where temperature is null;
select code from root.sg1.d1 where temperature is not null;Fuzzy Query
- Fuzzy matching using
Like
select * from root.sg.d1 where value like '%cc%';
select * from root.sg.device where value like '_b_';- Fuzzy matching using
Regexp
select * from root.sg.d1 where value regexp '^[A-Za-z]+$';
select * from root.sg.d1 where value regexp '^[a-z]+$' and time > 100;6.4 GROUP BY CLAUSE
- Aggregate By Time without Specifying the Sliding Step Length
select count(status), max_value(temperature) from root.ln.wf01.wt01 group by ([2017-11-01T00:00:00, 2017-11-07T23:00:00),1d);- Aggregate By Time Specifying the Sliding Step Length
select count(status), max_value(temperature) from root.ln.wf01.wt01 group by ([2017-11-01 00:00:00, 2017-11-07 23:00:00), 3h, 1d);- Aggregate by Natural Month
select count(status) from root.ln.wf01.wt01 group by([2017-11-01T00:00:00, 2019-11-07T23:00:00), 1mo, 2mo);
select count(status) from root.ln.wf01.wt01 group by([2017-10-31T00:00:00, 2019-11-07T23:00:00), 1mo, 2mo);- Left Open And Right Close Range
select count(status) from root.ln.wf01.wt01 group by ((2017-11-01T00:00:00, 2017-11-07T23:00:00],1d);- Aggregation By Variation
select __endTime, avg(s1), count(s2), sum(s3) from root.sg.d group by variation(s6);
select __endTime, avg(s1), count(s2), sum(s3) from root.sg.d group by variation(s6, ignoreNull=false);
select __endTime, avg(s1), count(s2), sum(s3) from root.sg.d group by variation(s6, 4);
select __endTime, avg(s1), count(s2), sum(s3) from root.sg.d group by variation(s6+s5, 10);- Aggregation By Condition
select max_time(charging_status),count(vehicle_status),last_value(soc) from root.** group by condition(charging_status=1,KEEP>=2,ignoringNull=true);
select max_time(charging_status),count(vehicle_status),last_value(soc) from root.** group by condition(charging_status=1,KEEP>=2,ignoringNull=false);- Aggregation By Session
select __endTime,count(*) from root.** group by session(1d);
select __endTime,sum(hardware) from root.ln.wf02.wt01 group by session(50s) having sum(hardware)>0 align by device;- Aggregation By Count
select count(charging_stauts), first_value(soc) from root.sg group by count(charging_status,5);
select count(charging_stauts), first_value(soc) from root.sg group by count(charging_status,5,ignoreNull=false);- Aggregation By Level
select count(status) from root.** group by level = 1;
select count(status) from root.** group by level = 3;
select count(status) from root.** group by level = 1, 3;
select max_value(temperature) from root.** group by level = 0;
select count(*) from root.ln.** group by level = 2;- Aggregate By Time with Level Clause
select count(status) from root.ln.wf01.wt01 group by ((2017-11-01T00:00:00, 2017-11-07T23:00:00],1d), level=1;
select count(status) from root.ln.wf01.wt01 group by ([2017-11-01 00:00:00, 2017-11-07 23:00:00), 3h, 1d), level=1;- Aggregation query by one single tag
SELECT AVG(temperature) FROM root.factory1.** GROUP BY TAGS(city);- Aggregation query by multiple tags
SELECT avg(temperature) FROM root.factory1.** GROUP BY TAGS(city, workshop);- Downsampling Aggregation by tags based on Time Window
SELECT avg(temperature) FROM root.factory1.** GROUP BY ([1000, 10000), 5s), TAGS(city, workshop);6.5 HAVING CLAUSE
Correct:
select count(s1) from root.** group by ([1,11),2ms), level=1 having count(s2) > 1;
select count(s1), count(s2) from root.** group by ([1,11),2ms) having count(s2) > 1 align by device;Incorrect:
select count(s1) from root.** group by ([1,3),1ms) having sum(s1) > s1;
select count(s1) from root.** group by ([1,3),1ms) having s1 > 1;
select count(s1) from root.** group by ([1,3),1ms), level=1 having sum(d1.s1) > 1;
select count(d1.s1) from root.** group by ([1,3),1ms), level=1 having sum(s1) > 1;6.6 FILL CLAUSE
PREVIOUS Fill
select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(previous);PREVIOUS FILL and specify the fill timeout threshold
select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(previous, 2m);LINEAR Fill
select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(linear);Constant Fill
select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(2.0);
select temperature, status from root.sgcc.wf03.wt01 where time >= 2017-11-01T16:37:00.000 and time <= 2017-11-01T16:40:00.000 fill(true);6.7 LIMIT and SLIMIT CLAUSES (PAGINATION)
Row Control over Query Results
select status, temperature from root.ln.wf01.wt01 limit 10;
select status, temperature from root.ln.wf01.wt01 limit 5 offset 3;
select status,temperature from root.ln.wf01.wt01 where time > 2017-11-01T00:05:00.000 and time< 2017-11-01T00:12:00.000 limit 2 offset 3;
select count(status), max_value(temperature) from root.ln.wf01.wt01 group by ([2017-11-01T00:00:00, 2017-11-07T23:00:00),1d) limit 5 offset 3;Column Control over Query Results
select * from root.ln.wf01.wt01 where time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000 slimit 1;
select * from root.ln.wf01.wt01 where time > 2017-11-01T00:05:00.000 and time < 2017-11-01T00:12:00.000 slimit 1 soffset 1;
select max_value(*) from root.ln.wf01.wt01 group by ([2017-11-01T00:00:00, 2017-11-07T23:00:00),1d) slimit 1 soffset 1;Row and Column Control over Query Results
select * from root.ln.wf01.wt01 limit 10 offset 100 slimit 2 soffset 0;6.8 ORDER BY CLAUSE
Order by in ALIGN BY TIME mode
select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time desc;Order by in ALIGN BY DEVICE mode
select * from root.ln.** where time <= 2017-11-01T00:01:00 order by device desc,time asc align by device;
select * from root.ln.** where time <= 2017-11-01T00:01:00 order by time asc,device desc align by device;
select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device;
select count(*) from root.ln.** group by ((2017-11-01T00:00:00.000+08:00,2017-11-01T00:03:00.000+08:00],1m) order by device asc,time asc align by device;Order by arbitrary expressions
select score from root.** order by score desc align by device;
select score,total from root.one order by base+score+bonus desc;
select score,total from root.one order by total desc;
select base, score, bonus, total from root.** order by total desc NULLS Last,
score desc NULLS Last,
bonus desc NULLS Last,
time desc align by device;
select min_value(total) from root.** order by min_value(total) asc align by device;
select min_value(total),max_value(base) from root.** order by max_value(total) desc align by device;
select score from root.** order by device asc, score desc, time asc align by device;6.9 ALIGN BY CLAUSE
Align by Device
select * from root.ln.** where time <= 2017-11-01T00:01:00 align by device;6.10 INTO CLAUSE (QUERY WRITE-BACK)
select s1, s2 into root.sg_copy.d1(t1), root.sg_copy.d2(t1, t2), root.sg_copy.d1(t2) from root.sg.d1, root.sg.d2;
select count(s1 + s2), last_value(s2) into root.agg.count(s1_add_s2), root.agg.last_value(s2) from root.sg.d1 group by ([0, 100), 10ms);
select s1, s2 into root.sg_copy.d1(t1, t2), root.sg_copy.d2(t1, t2) from root.sg.d1, root.sg.d2 align by device;
select s1 + s2 into root.expr.add(d1s1_d1s2), root.expr.add(d2s1_d2s2) from root.sg.d1, root.sg.d2 align by device;- Using variable placeholders:
select s1, s2
into root.sg_copy.d1(::), root.sg_copy.d2(s1), root.sg_copy.d1(${3}), root.sg_copy.d2(::)
from root.sg.d1, root.sg.d2;
select d1.s1, d1.s2, d2.s3, d3.s4
into ::(s1_1, s2_2), root.sg.d2_2(s3_3), root.${2}_copy.::(s4)
from root.sg;
select * into root.sg_bk.::(::) from root.sg.**;
select s1, s2, s3, s4
into root.backup_sg.d1(s1, s2, s3, s4), root.backup_sg.d2(::), root.sg.d3(backup_${4})
from root.sg.d1, root.sg.d2, root.sg.d3
align by device;
select avg(s1), sum(s2) + sum(s3), count(s4)
into root.agg_${2}.::(avg_s1, sum_s2_add_s3, count_s4)
from root.**
align by device;
select * into ::(backup_${4}) from root.sg.** align by device;
select s1, s2 into root.sg_copy.d1(t1, t2), aligned root.sg_copy.d2(t1, t2) from root.sg.d1, root.sg.d2 align by device;7. Maintennance
Generate the corresponding query plan:
explain select s1,s2 from root.sg.d1;Execute the corresponding SQL, analyze the execution and output:
explain analyze select s1,s2 from root.sg.d1 order by s1;8. OPERATOR
For more details, see document Operator-and-Expression.
8.1 Arithmetic Operators
For details and examples, see the document Arithmetic Operators and Functions.
select s1, - s1, s2, + s2, s1 + s2, s1 - s2, s1 * s2, s1 / s2, s1 % s2 from root.sg.d1;8.2 Comparison Operators
For details and examples, see the document Comparison Operators and Functions.
# Basic comparison operators;
select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test;
# `BETWEEN ... AND ...` operator;
select temperature from root.sg1.d1 where temperature between 36.5 and 40;
select temperature from root.sg1.d1 where temperature not between 36.5 and 40;
# Fuzzy matching operator: Use `Like` for fuzzy matching;
select * from root.sg.d1 where value like '%cc%';
select * from root.sg.device where value like '_b_';
# Fuzzy matching operator: Use `Regexp` for fuzzy matching;
select * from root.sg.d1 where value regexp '^[A-Za-z]+$';
select * from root.sg.d1 where value regexp '^[a-z]+$' and time > 100;
select b, b like '1%', b regexp '[0-2]' from root.test;
# `IS NULL` operator;
select code from root.sg1.d1 where temperature is null;
select code from root.sg1.d1 where temperature is not null;
# `IN` operator;
select code from root.sg1.d1 where code in ('200', '300', '400', '500');
select code from root.sg1.d1 where code not in ('200', '300', '400', '500');
select a, a in (1, 2) from root.test;8.3 Logical Operators
For details and examples, see the document Logical Operators.
select a, b, a > 10, a <= b, !(a <= b), a > 10 && a > b from root.test;9. BUILT-IN FUNCTIONS
For more details, see document Operator-and-Expression.
9.1 Aggregate Functions
For details and examples, see the document Aggregate Functions.
select count(status) from root.ln.wf01.wt01;
select count_if(s1=0 & s2=0, 3), count_if(s1=1 & s2=0, 3) from root.db.d1;
select count_if(s1=0 & s2=0, 3, 'ignoreNull'='false'), count_if(s1=1 & s2=0, 3, 'ignoreNull'='false') from root.db.d1;
select time_duration(s1) from root.db.d1;9.2 Arithmetic Functions
For details and examples, see the document Arithmetic Operators and Functions.
select s1, sin(s1), cos(s1), tan(s1) from root.sg1.d1 limit 5 offset 1000;
select s4,round(s4),round(s4,2),round(s4,-1) from root.sg1.d1;9.3 Comparison Functions
For details and examples, see the document Comparison Operators and Functions.
select ts, on_off(ts, 'threshold'='2') from root.test;
select ts, in_range(ts, 'lower'='2', 'upper'='3.1') from root.test;9.4 String Processing Functions
For details and examples, see the document String Processing.
select s1, string_contains(s1, 's'='warn') from root.sg1.d4;
select s1, string_matches(s1, 'regex'='[^\\s]+37229') from root.sg1.d4;
select s1, length(s1) from root.sg1.d1;
select s1, locate(s1, "target"="1") from root.sg1.d1;
select s1, locate(s1, "target"="1", "reverse"="true") from root.sg1.d1;
select s1, startswith(s1, "target"="1") from root.sg1.d1;
select s1, endswith(s1, "target"="1") from root.sg1.d1;
select s1, s2, concat(s1, s2, "target1"="IoT", "target2"="DB") from root.sg1.d1;
select s1, s2, concat(s1, s2, "target1"="IoT", "target2"="DB", "series_behind"="true") from root.sg1.d1;
select s1, substring(s1 from 1 for 2) from root.sg1.d1;
select s1, replace(s1, 'es', 'tt') from root.sg1.d1;
select s1, upper(s1) from root.sg1.d1;
select s1, lower(s1) from root.sg1.d1;
select s3, trim(s3) from root.sg1.d1;
select s1, s2, strcmp(s1, s2) from root.sg1.d1;
select strreplace(s1, "target"=",", "replace"="/", "limit"="2") from root.test.d1;
select strreplace(s1, "target"=",", "replace"="/", "limit"="1", "offset"="1", "reverse"="true") from root.test.d1;
select regexmatch(s1, "regex"="\d+\.\d+\.\d+\.\d+", "group"="0") from root.test.d1;
select regexreplace(s1, "regex"="192\.168\.0\.(\d+)", "replace"="cluster-$1", "limit"="1") from root.test.d1;
select regexsplit(s1, "regex"=",", "index"="-1") from root.test.d1;
select regexsplit(s1, "regex"=",", "index"="3") from root.test.d1;9.5 Data Type Conversion Function
For details and examples, see the document Data Type Conversion Function.
SELECT cast(s1 as INT32) from root.sg;9.6 Constant Timeseries Generating Functions
For details and examples, see the document Constant Timeseries Generating Functions.
select s1, s2, const(s1, 'value'='1024', 'type'='INT64'), pi(s2), e(s1, s2) from root.sg1.d1;9.7 Selector Functions
For details and examples, see the document Selector Functions.
select s1, top_k(s1, 'k'='2'), bottom_k(s1, 'k'='2') from root.sg1.d2 where time > 2020-12-10T20:36:15.530+08:00;9.8 Continuous Interval Functions
For details and examples, see the document Continuous Interval Functions.
select s1, zero_count(s1), non_zero_count(s2), zero_duration(s3), non_zero_duration(s4) from root.sg.d2;9.9 Variation Trend Calculation Functions
For details and examples, see the document Variation Trend Calculation Functions.
select s1, time_difference(s1), difference(s1), non_negative_difference(s1), derivative(s1), non_negative_derivative(s1) from root.sg1.d1 limit 5 offset 1000;
SELECT DIFF(s1), DIFF(s2) from root.test;
SELECT DIFF(s1, 'ignoreNull'='false'), DIFF(s2, 'ignoreNull'='false') from root.test;9.10 Sample Functions
For details and examples, see the document Sample Functions.
select equal_size_bucket_random_sample(temperature,'proportion'='0.1') as random_sample from root.ln.wf01.wt01;
select equal_size_bucket_agg_sample(temperature, 'type'='avg','proportion'='0.1') as agg_avg, equal_size_bucket_agg_sample(temperature, 'type'='max','proportion'='0.1') as agg_max, equal_size_bucket_agg_sample(temperature,'type'='min','proportion'='0.1') as agg_min, equal_size_bucket_agg_sample(temperature, 'type'='sum','proportion'='0.1') as agg_sum, equal_size_bucket_agg_sample(temperature, 'type'='extreme','proportion'='0.1') as agg_extreme, equal_size_bucket_agg_sample(temperature, 'type'='variance','proportion'='0.1') as agg_variance from root.ln.wf01.wt01;
select equal_size_bucket_m4_sample(temperature, 'proportion'='0.1') as M4_sample from root.ln.wf01.wt01;
select equal_size_bucket_outlier_sample(temperature, 'proportion'='0.1', 'type'='avg', 'number'='2') as outlier_avg_sample, equal_size_bucket_outlier_sample(temperature, 'proportion'='0.1', 'type'='stendis', 'number'='2') as outlier_stendis_sample, equal_size_bucket_outlier_sample(temperature, 'proportion'='0.1', 'type'='cos', 'number'='2') as outlier_cos_sample, equal_size_bucket_outlier_sample(temperature, 'proportion'='0.1', 'type'='prenextdis', 'number'='2') as outlier_prenextdis_sample from root.ln.wf01.wt01;
select M4(s1,'timeInterval'='25','displayWindowBegin'='0','displayWindowEnd'='100') from root.vehicle.d1;
select M4(s1,'windowSize'='10') from root.vehicle.d1;9.11 Change Points Function
For details and examples, see the document Time-Series.
select change_points(s1), change_points(s2), change_points(s3), change_points(s4), change_points(s5), change_points(s6) from root.testChangePoints.d1;10. DATA QUALITY FUNCTION LIBRARY
For more details, see document Operator-and-Expression.
10.1 Data Quality
For details and examples, see the document Data-Quality.
# Completeness;
select completeness(s1) from root.test.d1 where time <= 2020-01-01 00:00:30;
select completeness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00:01:00;
# Consistency;
select consistency(s1) from root.test.d1 where time <= 2020-01-01 00:00:30;
select consistency(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00:01:00;
# Timeliness;
select timeliness(s1) from root.test.d1 where time <= 2020-01-01 00:00:30;
select timeliness(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00:01:00;
# Validity;
select Validity(s1) from root.test.d1 where time <= 2020-01-01 00:00:30;
select Validity(s1,"window"="15") from root.test.d1 where time <= 2020-01-01 00:01:00;
# Accuracy;
select Accuracy(t1,t2,t3,m1,m2,m3) from root.test;10.2 Data Profiling
For details and examples, see the document Data-Profiling.
# ACF;
select acf(s1) from root.test.d1 where time <= 2020-01-01 00:00:05;
# Distinct;
select distinct(s2) from root.test.d2;
# Histogram;
select histogram(s1,"min"="1","max"="20","count"="10") from root.test.d1;
# Integral;
select integral(s1) from root.test.d1 where time <= 2020-01-01 00:00:10;
select integral(s1, "unit"="1m") from root.test.d1 where time <= 2020-01-01 00:00:10;
# IntegralAvg;
select integralavg(s1) from root.test.d1 where time <= 2020-01-01 00:00:10;
# Mad;
select mad(s0) from root.test;
select mad(s0, "error"="0.01") from root.test;
# Median;
select median(s0, "error"="0.01") from root.test;
# MinMax;
select minmax(s1) from root.test;
# Mode;
select mode(s2) from root.test.d2;
# MvAvg;
select mvavg(s1, "window"="3") from root.test;
# PACF;
select pacf(s1, "lag"="5") from root.test;
# Percentile;
select percentile(s0, "rank"="0.2", "error"="0.01") from root.test;
# Quantile;
select quantile(s0, "rank"="0.2", "K"="800") from root.test;
# Period;
select period(s1) from root.test.d3;
# QLB;
select QLB(s1) from root.test.d1;
# Resample;
select resample(s1,'every'='5m','interp'='linear') from root.test.d1;
select resample(s1,'every'='30m','aggr'='first') from root.test.d1;
select resample(s1,'every'='30m','start'='2021-03-06 15:00:00') from root.test.d1;
# Sample;
select sample(s1,'method'='reservoir','k'='5') from root.test.d1;
select sample(s1,'method'='isometric','k'='5') from root.test.d1;
# Segment;
select segment(s1, "error"="0.1") from root.test;
# Skew;
select skew(s1) from root.test.d1;
# Spline;
select spline(s1, "points"="151") from root.test;
# Spread;
select spread(s1) from root.test.d1 where time <= 2020-01-01 00:00:30;
# Stddev;
select stddev(s1) from root.test.d1;
# ZScore;
select zscore(s1) from root.test;10.3 Anomaly Detection
For details and examples, see the document Anomaly-Detection.
# IQR;
select iqr(s1) from root.test;
# KSigma;
select ksigma(s1,"k"="1.0") from root.test.d1 where time <= 2020-01-01 00:00:30;
# LOF;
select lof(s1,s2) from root.test.d1 where time<1000;
select lof(s1, "method"="series") from root.test.d1 where time<1000;
# MissDetect;
select missdetect(s2,'minlen'='10') from root.test.d2;
# Range;
select range(s1,"lower_bound"="101.0","upper_bound"="125.0") from root.test.d1 where time <= 2020-01-01 00:00:30;
# TwoSidedFilter;
select TwoSidedFilter(s0, 'len'='5', 'threshold'='0.3') from root.test;
# Outlier;
select outlier(s1,"r"="5.0","k"="4","w"="10","s"="5") from root.test;
# MasterTrain;
select MasterTrain(lo,la,m_lo,m_la,'p'='3','eta'='1.0') from root.test;
# MasterDetect;
select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='repair','p'='3','k'='3','eta'='1.0') from root.test;
select MasterDetect(lo,la,m_lo,m_la,model,'output_type'='anomaly','p'='3','k'='3','eta'='1.0') from root.test;10.4 Frequency Domain
For details and examples, see the document Frequency-Domain.
# Conv;
select conv(s1,s2) from root.test.d2;
# Deconv;
select deconv(s3,s2) from root.test.d2;
select deconv(s3,s2,'result'='remainder') from root.test.d2;
# DWT;
select dwt(s1,"method"="haar") from root.test.d1;
# FFT;
select fft(s1) from root.test.d1;
select fft(s1, 'result'='real', 'compress'='0.99'), fft(s1, 'result'='imag','compress'='0.99') from root.test.d1;
# HighPass;
select highpass(s1,'wpass'='0.45') from root.test.d1;
# IFFT;
select ifft(re, im, 'interval'='1m', 'start'='2021-01-01 00:00:00') from root.test.d1;
# LowPass;
select lowpass(s1,'wpass'='0.45') from root.test.d1;
# Envelope;
select envelope(s1) from root.test.d1;10.5 Data Matching
For details and examples, see the document Data-Matching.
# Cov;
select cov(s1,s2) from root.test.d2;
# DTW;
select dtw(s1,s2) from root.test.d2;
# Pearson;
select pearson(s1,s2) from root.test.d2;
# PtnSym;
select ptnsym(s4, 'window'='5', 'threshold'='0') from root.test.d1;
# XCorr;
select xcorr(s1, s2) from root.test.d1 where time <= 2020-01-01 00:00:05;10.6 Data Repairing
For details and examples, see the document Data-Repairing.
# TimestampRepair;
select timestamprepair(s1,'interval'='10000') from root.test.d2;
select timestamprepair(s1) from root.test.d2;
# ValueFill;
select valuefill(s1) from root.test.d2;
select valuefill(s1,"method"="previous") from root.test.d2;
# ValueRepair;
select valuerepair(s1) from root.test.d2;
select valuerepair(s1,'method'='LsGreedy') from root.test.d2;
# MasterRepair;
select MasterRepair(t1,t2,t3,m1,m2,m3) from root.test;
# SeasonalRepair;
select seasonalrepair(s1,'period'=3,'k'=2) from root.test.d2;
select seasonalrepair(s1,'method'='improved','period'=3) from root.test.d2;10.7 Series Discovery
For details and examples, see the document Series-Discovery.
# ConsecutiveSequences;
select consecutivesequences(s1,s2,'gap'='5m') from root.test.d1;
select consecutivesequences(s1,s2) from root.test.d1;
# ConsecutiveWindows;
select consecutivewindows(s1,s2,'length'='10m') from root.test.d1;10.8 Machine Learning
For details and examples, see the document Machine-Learning.
# AR;
select ar(s0,"p"="2") from root.test.d0;
# Representation;
select representation(s0,"tb"="3","vb"="2") from root.test.d0;
# RM;
select rm(s0, s1,"tb"="3","vb"="2") from root.test.d0;11. CONDITIONAL EXPRESSION
For details and examples, see the document Conditional Expressions.
select T, P, case
when 1000<T and T<1050 and 1000000<P and P<1100000 then "good!"
when T<=1000 or T>=1050 then "bad temperature"
when P<=1000000 or P>=1100000 then "bad pressure"
end as `result`
from root.test1;
select str, case
when str like "%cc%" then "has cc"
when str like "%dd%" then "has dd"
else "no cc and dd" end as `result`
from root.test2;
select
count(case when x<=1 then 1 end) as `(-∞,1]`,
count(case when 1<x and x<=3 then 1 end) as `(1,3]`,
count(case when 3<x and x<=7 then 1 end) as `(3,7]`,
count(case when 7<x then 1 end) as `(7,+∞)`
from root.test3;
select x, case x when 1 then "one" when 2 then "two" else "other" end from root.test4;
select x, case x when 1 then true when 2 then false end as `result` from root.test4;
select x, case x
when 1 then 1
when 2 then 222222222222222
when 3 then 3.3
when 4 then 4.4444444444444
end as `result`
from root.test4;12. TRIGGER
For more details, see document TRIGGER.
12.1 Create Trigger
// Create Trigger
createTrigger
: CREATE triggerType TRIGGER triggerName=identifier triggerEventClause ON pathPattern AS className=STRING_LITERAL uriClause? triggerAttributeClause?
;
triggerType
: STATELESS | STATEFUL
;
triggerEventClause
: (BEFORE | AFTER) INSERT
;
uriClause
: USING URI uri
;
uri
: STRING_LITERAL
;
triggerAttributeClause
: WITH LR_BRACKET triggerAttribute (COMMA triggerAttribute)* RR_BRACKET
;
triggerAttribute
: key=attributeKey operator_eq value=attributeValue
;12.2 Drop Trigger
// Drop Trigger
dropTrigger
: DROP TRIGGER triggerName=identifier
;12.3 Show Trigger
SHOW TRIGGERS;13. CONTINUOUS QUERY (CQ)
For more details, see document CONTINUOUS QUERY.
CREATE (CONTINUOUS QUERY | CQ) <cq_id>
[RESAMPLE
[EVERY <every_interval>]
[BOUNDARY <execution_boundary_time>]
[RANGE <start_time_offset>[, end_time_offset]]
]
[TIMEOUT POLICY BLOCKED|DISCARD]
BEGIN
SELECT CLAUSE
INTO CLAUSE
FROM CLAUSE
[WHERE CLAUSE]
[GROUP BY(<group_by_interval>[, <sliding_step>]) [, level = <level>]]
[HAVING CLAUSE]
[FILL ({PREVIOUS | LINEAR | constant} (, interval=DURATION_LITERAL)?)]
[LIMIT rowLimit OFFSET rowOffset]
[ALIGN BY DEVICE]
END;13.1 Configuring execution intervals
CREATE CONTINUOUS QUERY cq1
RESAMPLE EVERY 20s
BEGIN
SELECT max_value(temperature)
INTO root.ln.wf02.wt02(temperature_max), root.ln.wf02.wt01(temperature_max), root.ln.wf01.wt02(temperature_max), root.ln.wf01.wt01(temperature_max)
FROM root.ln.*.*
GROUP BY(10s)
END;13.2 Configuring time range for resampling
CREATE CONTINUOUS QUERY cq2
RESAMPLE RANGE 40s
BEGIN
SELECT max_value(temperature)
INTO root.ln.wf02.wt02(temperature_max), root.ln.wf02.wt01(temperature_max), root.ln.wf01.wt02(temperature_max), root.ln.wf01.wt01(temperature_max)
FROM root.ln.*.*
GROUP BY(10s)
END;13.3 Configuring execution intervals and CQ time ranges
CREATE CONTINUOUS QUERY cq3
RESAMPLE EVERY 20s RANGE 40s
BEGIN
SELECT max_value(temperature)
INTO root.ln.wf02.wt02(temperature_max), root.ln.wf02.wt01(temperature_max), root.ln.wf01.wt02(temperature_max), root.ln.wf01.wt01(temperature_max)
FROM root.ln.*.*
GROUP BY(10s)
FILL(100.0)
END;13.4 Configuring end_time_offset for CQ time range
CREATE CONTINUOUS QUERY cq4
RESAMPLE EVERY 20s RANGE 40s, 20s
BEGIN
SELECT max_value(temperature)
INTO root.ln.wf02.wt02(temperature_max), root.ln.wf02.wt01(temperature_max), root.ln.wf01.wt02(temperature_max), root.ln.wf01.wt01(temperature_max)
FROM root.ln.*.*
GROUP BY(10s)
FILL(100.0)
END;13.5 CQ without group by clause
CREATE CONTINUOUS QUERY cq5
RESAMPLE EVERY 20s
BEGIN
SELECT temperature + 1
INTO root.precalculated_sg.::(temperature)
FROM root.ln.*.*
align by device
END;13.6 CQ Management
Listing continuous queries
SHOW (CONTINUOUS QUERIES | CQS)Dropping continuous queries
DROP (CONTINUOUS QUERY | CQ) <cq_id>Altering continuous queries
CQs can't be altered once they're created. To change a CQ, you must DROP and reCREATE it with the updated settings.
14. USER-DEFINED FUNCTION (UDF)
For more details, see document UDF Libraries.
14.1 UDF Registration
CREATE FUNCTION <UDF-NAME> AS <UDF-CLASS-FULL-PATHNAME> (USING URI URI-STRING)?14.2 UDF Deregistration
DROP FUNCTION <UDF-NAME>14.3 UDF Queries
SELECT example(*) from root.sg.d1;
SELECT example(s1, *) from root.sg.d1;
SELECT example(*, *) from root.sg.d1;
SELECT example(s1, 'key1'='value1', 'key2'='value2'), example(*, 'key3'='value3') FROM root.sg.d1;
SELECT example(s1, s2, 'key1'='value1', 'key2'='value2') FROM root.sg.d1;
SELECT s1, s2, example(s1, s2) FROM root.sg.d1;
SELECT *, example(*) FROM root.sg.d1 DISABLE ALIGN;
SELECT s1 * example(* / s1 + s2) FROM root.sg.d1;
SELECT s1, s2, s1 + example(s1, s2), s1 - example(s1 + example(s1, s2) / s2) FROM root.sg.d1;14.4 Show All Registered UDFs
SHOW FUNCTIONS;15. ADMINISTRATION MANAGEMENT
For more details, see document Authority Management.
15.1 SQL Statements
- Create user (Requires MANAGE_USER permission)
CREATE USER <userName> <password>;
eg: CREATE USER user1 'passwd';- Delete user (Requires MANAGE_USER permission)
DROP USER <userName>;
eg: DROP USER user1;- Create role (Requires MANAGE_ROLE permission)
CREATE ROLE <roleName>;
eg: CREATE ROLE role1;- Delete role (Requires MANAGE_ROLE permission)
DROP ROLE <roleName>;
eg: DROP ROLE role1;- Grant role to user (Requires MANAGE_ROLE permission)
GRANT ROLE <ROLENAME> TO <USERNAME>;
eg: GRANT ROLE admin TO user1;- Revoke role from user(Requires MANAGE_ROLE permission)
REVOKE ROLE <ROLENAME> FROM <USER>;
eg: REVOKE ROLE admin FROM user1;- List all user (Requires MANAGE_USER permission)
LIST USER;- List all role (Requires MANAGE_ROLE permission)
LIST ROLE;- List all users granted specific role.(Requires MANAGE_USER permission)
LIST USER OF ROLE <roleName>;
eg: LIST USER OF ROLE roleuser;- List all role granted to specific user.
LIST ROLE OF USER <username>;
eg: LIST ROLE OF USER tempuser;- List all privileges of user
LIST PRIVILEGES OF USER <username>;
eg: LIST PRIVILEGES OF USER tempuser;- List all privileges of role
LIST PRIVILEGES OF ROLE <roleName>;
eg: LIST PRIVILEGES OF ROLE actor;- Modify password
ALTER USER <username> SET PASSWORD <password>;
eg: ALTER USER tempuser SET PASSWORD 'newpwd';15.2 Authorization and Deauthorization
GRANT <PRIVILEGES> ON <PATHS> TO ROLE/USER <NAME> [WITH GRANT OPTION];
eg: GRANT READ ON root.** TO ROLE role1;
eg: GRANT READ_DATA, WRITE_DATA ON root.t1.** TO USER user1;
eg: GRANT READ_DATA, WRITE_DATA ON root.t1.**,root.t2.** TO USER user1;
eg: GRANT MANAGE_ROLE ON root.** TO USER user1 WITH GRANT OPTION;
eg: GRANT ALL ON root.** TO USER user1 WITH GRANT OPTION;REVOKE <PRIVILEGES> ON <PATHS> FROM ROLE/USER <NAME>;
eg: REVOKE READ ON root.** FROM ROLE role1;
eg: REVOKE READ_DATA, WRITE_DATA ON root.t1.** FROM USER user1;
eg: REVOKE READ_DATA, WRITE_DATA ON root.t1.**, root.t2.** FROM USER user1;
eg: REVOKE MANAGE_ROLE ON root.** FROM USER user1;
eg: REVOKE ALL ON root.** FROM USER user1;Delete Time Partition (experimental)
Eg: DELETE PARTITION root.ln 0,1,2;Continuous Query,CQ
Eg: CREATE CONTINUOUS QUERY cq1 BEGIN SELECT max_value(temperature) INTO temperature_max FROM root.ln.*.* GROUP BY time(10s) END;Maintenance Command
- FLUSH
Eg: flush;- MERGE
Eg: MERGE;
Eg: FULL MERGE;- CLEAR CACHE
Eg: CLEAR CACHE;- START REPAIR DATA
Eg: START REPAIR DATA;- STOP REPAIR DATA
Eg: STOP REPAIR DATA;- SET SYSTEM TO READONLY / WRITABLE
Eg: SET SYSTEM TO READONLY / WRITABLE;- Query abort
Eg: KILL QUERY 1;