influxdb:如何按大于 4 的字段进行过滤

问题描述

我有以下查询显示所有记录:

SELECT "ApparentPower" FROM "machine01" WHERE "pin_no" = 'pin 2 ' AND $timeFilter;

我想按字段“ApparentPower”过滤并且只显示大于 10 的值。我该怎么做?

如果我运行查询 SELECT "ApparentPower" FROM "machine01" WHERE "pin_no" = 'pin 2 ' AND $timeFilter AND "ApparentPower" > 10;,即使存在大于 10 的值,也不会返回任何值。

此外,如果我运行查询 SELECT "ApparentPower" FROM "machine01" WHERE "pin_no" = 'pin 2 ' AND $timeFilter AND "ApparentPower" < 10;,我不会再次返回任何值。

但是,如果我运行查询 SELECT "ApparentPower" FROM "machine01" WHERE "pin_no" = 'pin 2 ' AND $timeFilter AND "ApparentPower" != 10;,我会返回所有值。

我已经使用命令 curl -sL -I localhost:8086/ping 检查了正在运行的 influx 版本:

HTTP/1.1 204 No Content
Content-Type: application/json
Request-Id: f4132538-7129-11eb-b770-000000000000
X-Influxdb-Version: 1.1.1
Date: Wed,17 Feb 2021 14:10:56 GMT

解决方法

很可能,“ApparentPower”字段作为字符串写入 InfluxDB。

您可以使用以下方法进行验证:SHOW FIELD KEYS FROM "machine01"

字段必须写为整数或浮点数才能与 < 进行比较

更改数据类型

您不能更改现有测量字段的数据类型,但您可以:

  • 写入不同的字段名称,
  • 使用 DROP MEASUREMENT machine01 删除测量值,
  • 如果您启用了分片,请等到写入转到下一个分片。