Influxdb 获取XDB中给定时间的最后一个存储值

Influxdb 获取XDB中给定时间的最后一个存储值,influxdb,Influxdb,我正在将温度传感器的值存储在XDB数据库中,我正在寻找一个特殊的请求。 当温度以某一阈值变化时,每个传感器发送感测数据,这意味着所有传感器不会同时发送数据。 因此传感器1,即S1将在瞬间t1发送值1(S1\u v1)。然后S2将在t2发送S2\u v2,S3在t3发送S3\u v3,等等。 我希望得到给定时间内所有传感器的值t,这样在t2,S1的返回值将是S1\u v1(最后存储的一个) 请问我怎样才能用XDB做到这一点?我希望我的要求足够明确。 非常感谢。您可以将所有传感器数据存储到一个测量中

我正在将温度传感器的值存储在XDB数据库中,我正在寻找一个特殊的请求。 当温度以某一阈值变化时,每个传感器发送感测数据,这意味着所有传感器不会同时发送数据。 因此传感器1,即
S1
将在瞬间
t1
发送值1(
S1\u v1
)。然后
S2
将在
t2
发送
S2\u v2
S3
t3
发送
S3\u v3
,等等。 我希望得到给定时间内所有传感器的值
t
,这样在
t2
,S1的返回值将是
S1\u v1
(最后存储的一个)

请问我怎样才能用XDB做到这一点?我希望我的要求足够明确。
非常感谢。

您可以将所有传感器数据存储到一个
测量中

然后使用
标签
呼叫名称存储传感器名称

示例:

> select * from sensors;
name: sensors
time                name value
----                ---- -----
1547100000000000000 s1   500
1547200000000000000 s2   600
1547300000000000000 s3   700
1548000000000000000 s1   900
1548000000000000000 s2   800
1548000000000000000 s3   999
name: sensors
tags: name=s3
time                value
----                -----
1547300000000000000 700

name: sensors
tags: name=s2
time                value
----                -----
1547200000000000000 600

name: sensors
tags: name=s1
time                value
----                -----
1547100000000000000 500
要检索给定时间范围内所有传感器的最新存储值
t
,可以执行以下操作:

SELECT * FROM sensors 
 WHERE time >= 1547000000000000000 and time <= 1547300000000000000
 GROUP BY "name" order by desc limit 1;

上面的查询本质上是根据时间过滤器将所有传感器的数据分组到单个存储桶中。然后,
按DESC排序
用于将它们按降序排序,以便第一行始终是时间最长的点<代码>限制1
只是要求查询引擎返回前1行。

非常感谢。实际上,我希望有一个请求,在这个请求中我指定一个特定的时间戳,并获取此时最后存储的所有值。不提供时间范围。你认为这可能吗?是的。不要在filter语句中给它一个范围,只执行
WHERE time