代码之家  ›  专栏  ›  技术社区  ›  Atmesh Mishra

InfluxDB查询以获取Grafana的不同值的计数

  •  0
  • Atmesh Mishra  · 技术社区  · 6 年前

    我有一个收集器,它从日志文件中收集三个字段,并以以下格式保存到influxDB:

    费尔达费尔达费尔达费尔达
    -------------------------
    A00123
    B02100
    A0013
    A00123

    我想在中绘制图形 Grafana 这样我就可以计算出“A”和“B”的出现次数(费尔达)
    接口信息处理器 :FeildA可以有多个值,这是之前未知的。因此,不能使用“where”子句编写查询。

    1 回复  |  直到 6 年前
        1
  •  1
  •   Yuri Lachin    6 年前

    如果 FeildA 仅定义为 field 在度量模式中,您可以在“where”子句中使用regexp,这些查询可能适合您:

    ```

    SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA::field =~ /^A$/
    SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA::field =~ /^A$/
    SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter and FeildA =~ /^(A|B)$/
    

    ```

    如果 费尔达 (基数)是合理的,真正的解决办法是 费尔达 “标记”而不是“字段”。然后您可以在查询中使用“按标记分组”。例如,查询:

    ```

    SELECT COUNT(FeildA) FROM "logdata" WHERE $timeFilter AND "FeildA" =~ /^(A|B|C|D)$/ GROUP BY time(1m), FeildA fill(null)
    

    ```

    将给出出现“A”、“B”、“C”、“D”的计数。但这需要更改收集器。 费尔达 influxdb中既可以是“标记”也可以是“字段”,但名称不同时更好,以避免冲突并简化查询中的语法。