es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿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?

Tags:  , ,

Answer

  1. Avatar for 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í:

    join(tables: {min, max}, on: ["_time", "_field", "path", "_measurement", "env"], method: "inner")
    

    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.

Comments are closed.