Flux
Présentation
Langage propriétaire d’InfluxDB plus puissant qu’InfluxQL.
Support des jointures entre measurements.
Syntaxe fonctionnelle avec pipe (|>).
Plus éloigné de SQL mais plus expressif.
Structure d’une requête
Pattern de base :
from(bucket: "nom_bucket")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "temperature")Exemples de requêtes
Requête simple :
from(bucket: "meteo")
|> range(start: -24h)
|> filter(fn: (r) => r._measurement == "temperature")
|> filter(fn: (r) => r.location == "paris")Agrégation avec fenêtre temporelle :
from(bucket: "meteo")
|> range(start: -7d)
|> filter(fn: (r) => r._measurement == "temperature")
|> aggregateWindow(every: 1h, fn: mean)Groupement :
from(bucket: "meteo")
|> range(start: -1d)
|> filter(fn: (r) => r._measurement == "temperature")
|> group(columns: ["location"])
|> mean()Opérations sur les buckets
Création de bucket :
buckets.create(name: "nouveau_bucket", retentionRules: [{everySeconds: 2592000}])Suppression de bucket :
buckets.delete(id: "bucket_id")Insertion de données :
import "influxdata/influxdb"
data = "temperature,location=paris value=22.5"
influxdb.write(bucket: "meteo", data: data)Suppression de données :
from(bucket: "meteo")
|> range(start: 2023-01-01T00:00:00Z, stop: 2023-12-31T23:59:59Z)
|> filter(fn: (r) => r._measurement == "temperature")
|> drop()