Influxdb 将最后一个与不同的或分组的组合?

Influxdb 将最后一个与不同的或分组的组合?,influxdb,influxql,Influxdb,Influxql,我有这样一个简单的时间序列: time id area 2019-09-25T17:21:00Z 1 us 2019-09-25T17:22:00Z 1 uk 2019-09-25T17:23:00Z 2 canada 2019-09-25T17:24:00Z 3 us 2019-09-25T17:25:00Z 1 cana

我有这样一个简单的时间序列:

time                    id         area
2019-09-25T17:21:00Z    1          us
2019-09-25T17:22:00Z    1          uk
2019-09-25T17:23:00Z    2          canada
2019-09-25T17:24:00Z    3          us
2019-09-25T17:25:00Z    1          canada
area      count        
us        1
canada    2
我想计算每个不同id的最后一点的面积,所以结果应该是这样的:

time                    id         area
2019-09-25T17:21:00Z    1          us
2019-09-25T17:22:00Z    1          uk
2019-09-25T17:23:00Z    2          canada
2019-09-25T17:24:00Z    3          us
2019-09-25T17:25:00Z    1          canada
area      count        
us        1
canada    2
由于id 1的最后一点是加拿大,我想忽略id 1之前的所有点

如何仅查询每个不同id的最近点?这可能吗

编辑:这是我正在处理的实际数据

name: click3
time                area   id       value
----                ----   --       -----
1569480689926885700 travel session1 1
1569480693527591500 travel session2 1
1569480699951799900 vtc    session3 1
1569480706416720700 health session1 1
1569480713265800900 claim  session4 1
1569480719882312600 health session3 1
区域和id确实是标记。当我使用GROUP BY执行简单的select LASTvalue时,会得到以下结果:

> select last(value) as value, area, id from click3 group by id
name: click3
tags: id=session1
time                value area   id
----                ----- ----   --
1569480706416720700 1     health session1

name: click3
tags: id=session2
time                value area   id
----                ----- ----   --
1569480693527591500 1     travel session2

name: click3
tags: id=session3
time                value area   id
----                ----- ----   --
1569480719882312600 1     health session3

name: click3
tags: id=session4
time                value area  id
----                ----- ----  --
1569480713265800900 1     claim session4
哪个是正确的-每个唯一会话id的最后一点。当我从这个查询中选择*作为子查询时,结果是

> select * from (select last(value) as value, area, id from click3 group by id)
name: click3
time                area   id       id_1     value
----                ----   --       ----     -----
1569480693527591500 travel session2 session2 1
1569480706416720700 health session1 session1 1
1569480713265800900 claim  session4 session4 1
1569480719882312600 health session3 session3 1
当我添加一个像COUNT*或SUMvalue这样的聚合时,我看到了预期的数字4:

> select count(*) from (select last(value) as value, area, id from click3 group by id)
name: click3
time count_value
---- -----------
0    4
但是如果我在这个查询中添加一个groupby-area,我希望看到travel的值为1,health的值为2,claim的值为1。出于某种原因,似乎使用了完整的原始数据点集,而不是子查询中的缩减集,因此我最终得出以下结论:

> select count(*) from (select last(value) as value, area from click3 group by id) group by area
name: click3
tags: area=claim
time count_value
---- -----------
0    1

name: click3
tags: area=health
time count_value
---- -----------
0    2

name: click3
tags: area=travel
time count_value
---- -----------
0    2

name: click3
tags: area=vtc
time count_value
---- -----------
0    1
我想我一定是误解了XDB的工作原理。我遗漏了什么?

假设id和area是标记,类似的东西应该可以工作

按id分组按区域从测量组中选择计数*从上次选择* 您可以用*替换单个字段。嵌套查询获取每个id的最后一个数据点,外部查询根据这些结果对每个区域进行计数。 根据具体的用例,查询可能略有不同