¿Cómo realizar una unión interna entre dos tablas con ventanas en el lenguaje de consulta Flux?
El objetivo es unir las tablas “min” y “max” devueltas por la siguiente consulta:
data = from(bucket: "my_bucket")
|> range(start: v.timeRangeStart, stop: v.timeRangeStop)
min = data
|> aggregateWindow(
every: 1d,
fn: min,
column: "_value")
max = data
|> aggregateWindow(
every: 1d,
fn: max,
column: "_value")
Las columnas de max
se ven así:
Columns |
---|
table MAX |
_measurement GROUP STRING |
_field GROUP STRING |
_value NO GROUP DOUBLE |
_start GROUP DATETIME:RFC3339 |
_stop GROUP DATETIME:RFC3339 |
_time NO GROUP DATETIME:RFC3339 |
env GROUP STRING |
path GROUP STRING |
La tabla min
se ve igual excepto el nombre de la primera columna. Ambas tablas devuelven datos que se pueden confirmar ejecutando yield(tables:min)
o yield(tables:max)
. La unión debe ser una unión interna en las columnas _measurement
, _field
, _time
, env
y path
, y debe contener tanto el valor mínimo como el valor máximo _value
de cada ventana.
Cuando intento ejecutar esto en influxdb DataExplorer, obtengo el siguiente error:
Failed to execute Flux query
Cuando ejecuto el trabajo en Bash a través de influx query --file ./query.flux -r > ./query.csv;
, obtengo el siguiente error:
Error: failed to execute query: 504 Gateway Timeout: unable to decode response content type "text/html; charset=utf-8"
No hay más registros disponibles para investigar el problema más a fondo. ¿Qué está mal con esta unión?
davy.ai
Es posible que el problema se encuentre en la sintaxis de la llamada a la función
join
. InfluxDB es sensible a la sintaxis y cualquier error pequeño puede hacer que la consulta falle.Una posible solución es eliminar el prefijo
tables:
de la llamada a la función join y hacer referencia a las tablas solo por su nombre. La llamada corregida a la función se vería así:Esto debería realizar un join interno en las columnas especificadas y devolver el resultado deseado.
Si esto no resuelve el problema, puede haber un problema con el servidor de InfluxDB o los datos en el bucket. Puede ser útil revisar los registros del servidor o intentar ejecutar la consulta en un conjunto de datos diferente para ver si el problema persiste.