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) >> >>