good day. documentation have very little information about how to make complex dowsampling. we have some data from many sensors. this data marked with 3 tags : ControllerName,DeviceName and SensorName select to display sensor mesurment looks like this |> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == “mqtt_consumer”)
|> filter(fn: (r) => r[“Controller”] == “ControllerName”)
|> filter(fn: (r) => r[“Device”] == “deviceName”)
|> filter(fn: (r) => r[“Control”] == “SensorName”)
|> filter(fn: (r) => r["_field"] == “value”)
but how can i make one downsampling task that filter out each controller with each device and each sensor and aggregate those seqenses with tags preserved.
i need domething like this:
foreach(controlerTag: scheme.getTagValues("controller")){
foreach(deviceTag: scheme.getTagValues("device")){
foreach(sensorTag: scheme.getTagValues("sensor")){
data = from(bucket: "Bucket")
|> range(start: -task.every)
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
|> filter(fn: (r) => r["_measurement"] == "mqtt_consumer")
|> filter(fn: (r) => r["controller"] == controlerTag)
|> filter(fn: (r) => r["device"] == deviceTag)
|> filter(fn: (r) => r["sensor"] == sensorTag)
|> filter(fn: (r) => r["_field"] == "value")
data
|> mean()
|> set(key: "agg_type", value: "mean")
|> set(key: "controller", value: controlerTag)
|> set(key: "device", value: deviceTag)
|> set(key: "sensor", value: sensorTag)
|> to(bucket: "5secAggregationFor1Day", org: "Org", tagColumns: ["agg_type"])
data
|> last()
|> set(key: "agg_type", value: "last")
|> set(key: "controller", value: controlerTag)
|> set(key: "device", value: deviceTag)
|> set(key: "sensor", value: sensorTag)
|> to(bucket: "5secAggregationFor1Day", org: "Org", tagColumns: ["agg_type"])
}
}
}