Hi ,teacher qiao,
I think there's a little bit of ambiguity here , ‘root.ChangSha’ is a group,
but it was also involved in the naming of another device !
Or we don't allow TIMESERIES to be created directly under storage groups.
because, I think the introduction of "Table" ,the data will be confusing.
example:
+-----------------------------------+------------------------------------+—————————+
Time device
speed
+-----------------------------------+------------------------------------+—————————+
1970-01-01T08:00:00.001+08:00 | root.北京 | 1
+-----------------------------------+------------------------------------+—————————+
1970-01-01T08:00:00.001+08:00 | root.北京.西城区 | 1
+-----------------------------------+------------------------------------+—————————+
1970-01-01T08:00:00.001+08:00 | root.北京.西城区.老张的车 | 1
+-----------------------------------+------------------------------------+—————————+
> 在 2019年11月14日,下午5:28,Jialin Qiao <[email protected]> 写道:
>
> Hi,
>
> The path from root to the last but one is device, which is like a table in
> relational databases.
>
>> CREATE TIMESERIES root.ChangSha.A.aa WITH DATATYPE=INT64, ENCODING=RLE;
>
> In this case, root.ChangSha.A is device.
>
>> CREATE TIMESERIES root.ChangSha.aa WITH DATATYPE=INT64, ENCODING=RLE;
>
> In this case, root.ChangSha is a device.
>
> Usually, we do not create a device under another device, which is weired.
>
> Thanks,
> --
> Jialin Qiao
> School of Software, Tsinghua University
>
> 乔嘉林
> 清华大学 软件学院
>
>> -----原始邮件-----
>> 发件人: "刘大伟" <[email protected]>
>> 发送时间: 2019-11-14 14:18:42 (星期四)
>> 收件人: [email protected]
>> 抄送:
>> 主题: [jira] [Created] (IOTDB-305) a sql to query a group of devices separately
>>
>> Hi,
>>
>> I have a question,
>>
>> SET STORAGE GROUP TO root.ChangSha;
>> CREATE TIMESERIES root.ChangSha.A.aa WITH DATATYPE=INT64, ENCODING=RLE;
>> CREATE TIMESERIES root.ChangSha.aa WITH DATATYPE=INT64, ENCODING=RLE;
>>
>>
>> insert into root.ChangSha.A(timestamp,aa) values(1,1);
>> insert into root.ChangSha(timestamp,aa) values(1,1);
>>
>>
>>
>> Select * from root.ChangSha where aa = 1
>>
>> Result will print :
>>
>> +-----------------------------------+------------------------------------+------------------+
>> | Time |root.ChangSha.A.aa|
>> root.ChangSha.aa|
>> +-----------------------------------+------------------------------------+------------------+
>> | 1970-01-01T08:00:00.001+08:00| 1 |
>> 1|
>> | 1970-01-01T08:00:00.002+08:00| null |
>> 1|
>> +-----------------------------------+------------------------------------+—————————+
>>
>> Which field is device and how to group by ?
>>
>>
>>> 在 2019年11月14日,下午12:21,Jialin Qiao <[email protected]> 写道:
>>>
>>> Hi,
>>>
>>>> "group by device" sql can't satisfy this demand. It is because the where
>>>> condition of "group by device" is shared by all devices.
>>>
>>> The "shared by all devices" is a little hard to comprehend. Many users are
>>> from relational databases.
>>> In relational databases, when querying a table, predicates are applied to
>>> each row.
>>> By default, IoTDB adopts table format: "time, series1, series2, ...,
>>> seriesN".
>>>
>>> For this scenario, what users really want is querying on a narrow table :
>>> "time, device, sensor1, sensor2, ..., sensor3".
>>> Maybe we need to introduce the concept of "Table", and enable users to
>>> choose which table that want to use by a "group by device" clause.
>>>
>>> Thanks,
>>> --
>>> Jialin Qiao
>>> School of Software, Tsinghua University
>>>
>>> 乔嘉林
>>> 清华大学 软件学院
>>>
>>>> -----原始邮件-----
>>>> 发件人: "Lei Rui (Jira)" <[email protected]>
>>>> 发送时间: 2019-11-14 11:19:00 (星期四)
>>>> 收件人: [email protected]
>>>> 抄送:
>>>> 主题: [jira] [Created] (IOTDB-305) a sql to query a group of devices
>>>> separately
>>>>
>>>> Lei Rui created IOTDB-305:
>>>> -----------------------------
>>>>
>>>> Summary: a sql to query a group of devices separately
>>>> Key: IOTDB-305
>>>> URL: https://issues.apache.org/jira/browse/IOTDB-305
>>>> Project: Apache IoTDB
>>>> Issue Type: New Feature
>>>> Reporter: Lei Rui
>>>>
>>>>
>>>> First of all, if Bob knows exactly what devices to query (root.sg.d1 and
>>>> root.sg.d2 in this case) , he can write sqls for every device:
>>>> {code:java}
>>>> sql1: select * from root.sg.d1 where s1=1
>>>> sql2: select * from root.sg.d2 where s1=1{code}
>>>> However, when there are many devices or devices are not specified in
>>>> advance, Bob wants to query like:
>>>> {code:java}
>>>> select * from root.sg.d1,root.sg.d2 where s1=1 <device separate>(a demo
>>>> conception)
>>>> / select * from root.sg.* where s1=1 <device separate>(a demo conception)
>>>> {code}
>>>> to return the result same as the concatenation of the results of the above
>>>> two queries (i.e., sql1 and sql2) while eliminating the trouble of writing
>>>> two separate sqls.
>>>>
>>>> "group by device" sql can't satisfy this demand. It is because the where
>>>> condition of "group by device" is shared by all devices. For example,
>>>> {code:java}
>>>> select * from root.sg.* where s1=1 group by device
>>>> {code}
>>>> equals
>>>> {code:java}
>>>> select * from root.sg.d1 where root.sg.d1.s1=1 and root.sg.d2.s1=1
>>>> select * from root.sg.d2 where root.sg.d1.s1=1 and root.sg.d2.s1=1
>>>> {code}
>>>> Note the "and" in the where condition. The following example further
>>>> demonstrates the effect:
>>>> {code:java}
>>>> SET STORAGE GROUP TO root.ChangSha;
>>>> CREATE TIMESERIES root.ChangSha.A.aa WITH DATATYPE=INT64, ENCODING=RLE;
>>>> CREATE TIMESERIES root.ChangSha.A.ab WITH DATATYPE=INT64, ENCODING=RLE;
>>>> CREATE TIMESERIES root.ChangSha.A.ac WITH DATATYPE=INT64, ENCODING=RLE;
>>>> CREATE TIMESERIES root.ChangSha.B.aa WITH DATATYPE=INT64, ENCODING=RLE;
>>>> CREATE TIMESERIES root.ChangSha.B.ab WITH DATATYPE=INT64, ENCODING=RLE;
>>>> CREATE TIMESERIES root.ChangSha.B.ad WITH DATATYPE=INT64, ENCODING=RLE;
>>>> insert into root.ChangSha.A(timestamp,aa,ab,ac) values(1,1,1,1);
>>>> insert into root.ChangSha.B(timestamp,aa,ab,ad) values(2,1,2,2);
>>>>
>>>> select * from root.ChangSha.A, root.ChangSha.B where aa=1 group by
>>>> device{code}
>>>> The above select query equals
>>>>
>>>>
>>>> {code:java}
>>>> select * from root.ChangSha.A where root.ChangSha.A.aa=1 and
>>>> root.ChangSha.B.aa=1
>>>> select * from root.ChangSha.B where root.ChangSha.A.aa=1 and
>>>> root.ChangSha.B.aa=1{code}
>>>>
>>>>
>>>> This select query will get an empty result because there is no timestamp
>>>> under which both root.ChangSha.A.aa=1 and root.ChangSha.B.aa=1.
>>>>
>>>> What Bob wants is:
>>>> {code:java}
>>>> select * from root.ChangSha.A, root.ChangSha.B where aa=1 <device
>>>> separate>(a demo conception)
>>>> {code}
>>>> equals
>>>> {code:java}
>>>> select * from root.ChangSha.A where root.ChangSha.A.aa=1
>>>> select * from root.ChangSha.B where root.ChangSha.B.aa=1{code}
>>>> to get the result like:
>>>> ||Time||Device||aa||ab||ac||ad||
>>>> |1970-01-01T08:00:00.001+08:00|root.ChangSha.A|1|1|1|null|
>>>> |1970-01-01T08:00:00.002+08:00|root.ChangSha.B|1|2|null|2|
>>>>
>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> This message was sent by Atlassian Jira
>>>> (v8.3.4#803005)
>>
>>