Agrupación de eventos en intervalos de tiempo con SQL
La división del tiempo convierte eventos individuales en una tendencia. Las opciones importantes no son solo la hora versus el día: también necesita una marca de tiempo, una zona horaria, un límite de intervalo, una regla de integridad y un tratamiento para los depósitos faltantes. Un gráfico puede parecer autoritario al comparar una hora completa con los primeros tres minutos de la hora actual.
Construya una serie UTC estable
SELECT
date_trunc('hour', timestamp_utc) AS hour,
COUNT(*) AS requests,
100.0 * SUM(CASE WHEN status = 'failed' THEN 1 ELSE 0 END)
/ NULLIF(COUNT(*), 0) AS error_rate_pct
FROM api_request_events
WHERE timestamp_utc >= now() - INTERVAL '7 days'
GROUP BY date_trunc('hour', timestamp_utc)
ORDER BY hour;
Utilice el campo timestamp_utc administrado por el servidor para el límite de la consulta. Mantenga las marcas de tiempo de origen como campos separados cuando describan otro momento comercial, como cuando un cliente móvil inició una acción fuera de línea. Si el tablero está operativo, UTC evita las brechas en el horario de verano y las horas locales repetidas.
date_trunc es la opción más sencilla para horas y días alineados con el calendario. date_bin es útil para un intervalo fijo como cinco minutos:
date_bin(INTERVAL '5 minutes', timestamp_utc, TIMESTAMP '1970-01-01')
Utilice el mismo origen en cada consulta que deba alinearse.
Manejar cubos incompletos y vacíos.
El depósito más nuevo suele estar incompleto. Exclúyalo de las comparaciones o etiquételo claramente. Para las alertas, permita un retraso en la ingestión antes de juzgar el último intervalo completado.
La agregación solo devuelve depósitos que contienen filas. Un punto faltante podría significar actividad cero, ingesta retrasada o una brecha en la consulta; esas interpretaciones no son intercambiables. Si una visualización llena los vacíos con cero, haga explícita esa transformación y confirme que el cero es semánticamente correcto.
Elija un depósito lo suficientemente grande como para producir un volumen estable pero lo suficientemente pequeño como para soportar la respuesta. Los períodos de cinco minutos pueden exponer un incidente; Los cubos diarios suelen ser mejores para la retención. Consulte Trabajar con marcas de tiempo, guía de respuesta a incidentes y receta de tasa de error móvil para ver ejemplos completos.