2015-03-22 8 views
8

Kann man nur nach dem letzten Wert (oder n-ten Wert) der Ergebnisse einer Abfrage fragen?InfluxDB - Nur den letzten Wert in der Abfrage erhalten

Zum Beispiel in der Abfrage:

SELECT value FROM response_times WHERE time > now() - 1h limit 1000; 

ist möglich, nur den letzten Wert zu erhalten, das heißt, je mehr man weit vor der Zeit (möglicherweise das 1000-te Element)?

Natürlich kann ich sie alle abrufen und dann auf die letzte überspringen, aber ich möchte die Bandbreite nicht auf diese Weise verschwenden.

Antwort

3

Suchen Sie in der API zuerst/zuletzt nach dem ersten oder letzten Datensatz einer Spalte. Sie haben auch oben/unten mehr als einen Datensatz wählen

[Bearbeiten] nach oben/unten scheinen higest/niedrigsten Werte des Zeitrahmens

+0

Wo ist dies dokumentiert? Ich kann es nicht finden bei http://influxdb.com/docs/v0.9/query_language/querying_data.html oder http://influxdb.com/docs/v0.8/api/query_language.html – dukebody

+2

Für 0,8 ist es in der Aggregatfunktionen: http://influxdb.com/docs/v0.8/api/aggregate_functions.html#first/last Es tut uns leid, den Link vorher nicht angegeben zu haben! –

+1

Ich bin am meisten daran interessiert, die Zeiten für die ersten/letzten Werte zu bekommen ... irgendeinen Weg, das zu tun? – tslater

9
SELECT last(value) FROM response_times WHERE time > now() - 1h; 

zurück, dass der letzte Wert der Spalte zurückgeben soll .

Wenn Sie jedoch möchten, können Sie die Sequenz in kleinere Teile aufteilen und den letzten Wert auswählen. Zum Beispiel:

SELECT last(value) FROM response_times WHERE time > now() - 1h GROUP BY time(60s); 

Es wird die Sequenz in 60-Sekunden-Fragmente aufteilen und wird für jedes Fragment den neuesten Wert aufnehmen.

8

Wenn Sie mit InfluxDB 0,8 ​​nicht FIRST() oder LAST() verwenden, wenn Sie nicht GROUP BY weil seine sehr langsam :(

Also, wenn Sie das lernen wollen diese Werte Sie shoud verwenden:

Erster Wert:

SELECT * FROM <SERIES> GROUP BY * ORDER BY ASC LIMIT 1 

Letzter Wert:

SELECT * FROM <SERIES> GROUP BY * ORDER BY DESC LIMIT 1 

Sie die GROUP BY * nicht löschen, weil dann könnte es möglich sein, dass man dann unerwartete Werte erhalten.

+0

Haben Sie eine Erklärung, wie diese unerwarteten Werte aussehen und warum sie auftauchen? –

+0

-1 für [FUD] (https://en.wikipedia.org/wiki/Fear,_uncertainty_and_doubt). Wenn Sie behaupten wollen, dass etwas kaputt ist, stellen Sie eine Demonstration der Zerbrochenheit vor - keine vage und unprüfbare Behauptung, dass "es möglich sein könnte, dass Sie unerwartete Werte erhalten" *. –

1
SELECT * FROM <SERIES> ORDER BY ASC LIMIT 1