2016-03-24 13 views
2

Ich habe einige Daten in InfluxDB, die Ereignisse für bestimmte TCP-Verbindungen verbunden sind. Die Messung ist also connection_events mit Tags: mac_address des verbindenden Systems und einige andere Metadaten. Der Wert wird nur verbunden = true | falseWie gruppiere ich nach Anzahl eines Feldes in InfluxDB?

Was ich will ist so etwas tun:

select count(mac_address), mac_address 
from connection_events 
where count(mac_address) > X 
group by mac_address 

Mit anderen Worten, ich möchte Ergebnisse sehen wie:

28, ABCD

14, EFGH

3, XYZQ

InfluxDB mag diese Art von Abfrage jedoch nicht. Ich kann nicht herausfinden, wie man das Dataset der Verbindungsereignisse analysiert und sie nach Mac-Adresse aggregiert.

+0

Ab Influxdb 1.2 gibt es Unterabfragen, aber Sie dürfen nicht den 'Mac_Adresse' Wert in der Auswahl verwenden, so dass Sie diese Art von Ergebnissen immer noch nicht haben können. Siehe: https://docs.influxdata.com/influxdb/v1.2/query_language/data_exploration/#subqueries –

Antwort

3

Funktionen in InfluxQL sind außerhalb der SELECT-Klausel nicht gültig, und es gibt noch keine Unterabfragen oder eine HAVING-Klausel.

Allerdings können Sie erreichen, was Sie brauchen von Continuous Queries

Verwenden Sie einen CQ mit foo die count(mac_address) und speichern, die in einer neuen Messung zu berechnen. CREATE CQ... SELECT COUNT(mac_address) AS count INTO foo FROM connection_events GROUP BY time(5m), * Dann können Sie für Ihre Grafik select count from foo where count > X group by mac_address abfragen.