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.

Múltiples series con una consulta en Grafana utilizando PostgresQL como fuente de datos.

Tengo datos en una tabla de Postgres con aproximadamente esta forma:

CREATE TABLE jobs
(
    id              BIGINT PRIMARY KEY,
    started_at      TIMESTAMPTZ,
    duration        NUMERIC,
    project_id      BIGINT
)

También he ideado una consulta que es más o menos lo que quiero:

SELECT
  $__timeGroupAlias(started_at,$__interval),
  avg(duration) AS "durations"
FROM jobs
WHERE
  project_id = 720
GROUP BY 1
ORDER BY 1

Esta consulta filtra por un único project_id exacto. Lo que realmente quiero es una línea en el gráfico para cada proyecto que tenga una entrada en la tabla, no solo para uno.

No logro encontrar una forma de hacerlo. He intentado todas las variantes posibles de cláusulas group by que se me ocurren, e incluso probé los ejemplos que encontré en línea, pero ninguno funcionó.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para mostrar una línea en el gráfico para cada proyecto que tenga una entrada en la tabla, puedes modificar la consulta para incluir una agrupación por el campo project_id:

    SELECT
      $__timeGroupAlias(started_at,$__interval),
      project_id,
      avg(duration) AS "durations"
    FROM jobs
    GROUP BY 1, 2
    ORDER BY 1
    

    Al agregar el campo project_id en la cláusula group by, la consulta devolverá una línea separada para cada proyecto con una entrada en la tabla. La columna avg(duration) mostrará la duración promedio de los trabajos para cada proyecto, y la columna started_at se agrupará según el intervalo de tiempo especificado.

    Nota: Dependiendo del número de proyectos y la cantidad de datos en la tabla, esta consulta puede devolver una gran cantidad de datos. Se recomienda utilizar filtros o limitar la cantidad de resultados devueltos a un nivel manejable.

Comments are closed.