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 <qj...@mails.tsinghua.edu.cn> 写道:
> 
> 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
> 
> 乔嘉林
> 清华大学 软件学院
> 
>> -----原始邮件-----
>> 发件人: "刘大伟" <13965...@qq.com>
>> 发送时间: 2019-11-14 14:18:42 (星期四)
>> 收件人: dev@iotdb.apache.org
>> 抄送: 
>> 主题: [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 <qj...@mails.tsinghua.edu.cn> 写道:
>>> 
>>> 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)" <j...@apache.org>
>>>> 发送时间: 2019-11-14 11:19:00 (星期四)
>>>> 收件人: dev@iotdb.apache.org
>>>> 抄送: 
>>>> 主题: [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)
>> 
>> 



Reply via email to