如何查询 InfluxDB 中的所有测量值,其中一个测量值等于 X
How to query all measurements in InfluxDB where a value from one measurement equals X
我从 Influx 数据库中查询所有测量值,如下所示:
http://localhost:8086/query?pretty=true&db=boatdata&q=SELECT value FROM /.*/ LIMIT 1
工作正常。但是,我需要获取所有测量的值,而不是 LIMIT 1
,其中一个测量的值 = x,所以我期望类似
SELECT value FROM /.*/ WHERE measurement1.value=x
但它不起作用。我希望这是有道理的。知道如何让它工作吗?谢谢
...为了更好地解释:在第一个查询 (http://localhost...) 中,我在 post 中列出了所有测量值的 1 条记录。但我想为所有测量值获得 1 条记录,其中测量值 1(其中一个测量值)等于 X。
使用 InfluxQL 是不可能的。您要求的所有测量值都是不同系列的数据 - 因此它们不会组合在一起 table。
InfluxDB 的想法是测量是单独的“tables”,它们由时间和标签键索引。我建议您通过将值写入不同的值字段来更改数据库架构。
您应该将数据放在一次测量中,以便根据需要进行查询。
您可以将所有数据从其他测量移动到一个测量,例如:
select "value" as "value1" from "measurement1" into "measurement" group by *
对于每个移入“measurement”的“measurement1”,它将收集许多值字段。
那么您就可以进行查询了:
select * from "measurement" where "value1"=5
上面的查询应该为您提供移入“测量”的所有值字段,这些字段具有相同的时间戳,其中字段“value1”=5。
提示:如果您的测量中有值 1、值 2、值 3,那么您可以使用正则表达式,例如:
select /value/ from "measurement" where "value1"=5
避免接收到您不想要的标签键值或字段值。
我从 Influx 数据库中查询所有测量值,如下所示:
http://localhost:8086/query?pretty=true&db=boatdata&q=SELECT value FROM /.*/ LIMIT 1
工作正常。但是,我需要获取所有测量的值,而不是 LIMIT 1
,其中一个测量的值 = x,所以我期望类似
SELECT value FROM /.*/ WHERE measurement1.value=x
但它不起作用。我希望这是有道理的。知道如何让它工作吗?谢谢
...为了更好地解释:在第一个查询 (http://localhost...) 中,我在 post 中列出了所有测量值的 1 条记录。但我想为所有测量值获得 1 条记录,其中测量值 1(其中一个测量值)等于 X。
使用 InfluxQL 是不可能的。您要求的所有测量值都是不同系列的数据 - 因此它们不会组合在一起 table。 InfluxDB 的想法是测量是单独的“tables”,它们由时间和标签键索引。我建议您通过将值写入不同的值字段来更改数据库架构。 您应该将数据放在一次测量中,以便根据需要进行查询。 您可以将所有数据从其他测量移动到一个测量,例如:
select "value" as "value1" from "measurement1" into "measurement" group by *
对于每个移入“measurement”的“measurement1”,它将收集许多值字段。 那么您就可以进行查询了:
select * from "measurement" where "value1"=5
上面的查询应该为您提供移入“测量”的所有值字段,这些字段具有相同的时间戳,其中字段“value1”=5。 提示:如果您的测量中有值 1、值 2、值 3,那么您可以使用正则表达式,例如:
select /value/ from "measurement" where "value1"=5
避免接收到您不想要的标签键值或字段值。