Node Name in Path
Node name is a special identifier, it can also be wildcard *
and **
. When creating timeseries, node name can not be wildcard. In query statment, you can use wildcard to match one or more nodes of path.
Wildcard
*
represents one node. For example, root.vehicle.*.sensor1
represents a 4-node path which is prefixed with root.vehicle
and suffixed with sensor1
.
**
represents (*
)+, which is one or more nodes of *
. For example, root.vehicle.device1.**
represents all paths prefixed by root.vehicle.device1
with nodes num greater than or equal to 4, like root.vehicle.device1.*
, root.vehicle.device1.*.*
, root.vehicle.device1.*.*.*
, etc; root.vehicle.**.sensor1
represents a path which is prefixed with root.vehicle
and suffixed with sensor1
and has at least 4 nodes.
As *
can also be used in expressions of select clause to represent multiplication, below are examples to help you better understand the usage of *
:
# create timeseries root.sg.`a*b`
create timeseries root.sg.`a*b` with datatype=FLOAT,encoding=PLAIN;
# As described in Identifier part, a*b should be quoted.
# "create timeseries root.sg.a*b with datatype=FLOAT,encoding=PLAIN" is wrong.
# create timeseries root.sg.a
create timeseries root.sg.a with datatype=FLOAT,encoding=PLAIN;
# create timeseries root.sg.b
create timeseries root.sg.b with datatype=FLOAT,encoding=PLAIN;
# query data of root.sg.`a*b`
select `a*b` from root.sg
# Header of result dataset
|Time|root.sg.a*b|
# multiplication of root.sg.a and root.sg.b
select a*b from root.sg
# Header of result dataset
|Time|root.sg.a * root.sg.b|
Identifier
When node name is not wildcard, it is a identifier, which means the constraints on it is the same as described in Identifier part.
- Create timeseries statement:
# Node name contains special characters like ` and .,all nodes of this timeseries are: ["root","sg","www.`baidu.com"]
create timeseries root.sg.`www.baidu.com`.a with datatype=FLOAT,encoding=PLAIN;
# Node name is a real number.
create timeseries root.sg.`111` with datatype=FLOAT,encoding=PLAIN;
After executing above statments, execute “show timeseries”,below is the result:
+---------------------------+-----+-------------+--------+--------+-----------+----+----------+
| timeseries|alias|database|dataType|encoding|compression|tags|attributes|
+---------------------------+-----+-------------+--------+--------+-----------+----+----------+
| root.sg.`111`.a| null| root.sg| FLOAT| PLAIN| SNAPPY|null| null|
|root.sg.`www.baidu.com`.a| null| root.sg| FLOAT| PLAIN| SNAPPY|null| null|
+---------------------------+-----+-------------+--------+--------+-----------+----+----------+
- Insert statment:
# Node name contains special characters like . and `
insert into root.sg.`www.baidu.com`(timestamp, a) values(1, 2);
# Node name is a real number.
insert into root.sg(timestamp, `111`) values (1, 2);
- Query statement:
# Node name contains special characters like . and `
select a from root.sg.`www.baidu.com`;
# Node name is a real number.
select `111` from root.sg
Results:
# select a from root.sg.`www.baidu.com`
+-----------------------------+---------------------------+
| Time|root.sg.`www.baidu.com`.a|
+-----------------------------+---------------------------+
|1970-01-01T08:00:00.001+08:00| 2.0|
+-----------------------------+---------------------------+
# select `111` from root.sg
+-----------------------------+-----------+
| Time|root.sg.111|
+-----------------------------+-----------+
|1970-01-01T08:00:00.001+08:00| 2.0|
+-----------------------------+-----------+