Funciones de ventana SQL para analizar eventos
Las funciones de ventana calculan en filas relacionadas y preservan cada fila en el resultado. Un GROUP BY normal reduce muchos eventos a una fila por grupo; una ventana puede mantener cada día, solicitud o cuenta mientras agrega un valor, clasificación o línea de base móvil anterior.
Comparar depósitos adyacentes
WITH daily AS (
SELECT
date_trunc('day', timestamp_utc) AS day,
COUNT(*) AS completed_jobs
FROM job_events
WHERE status = 'completed'
AND timestamp_utc >= now() - INTERVAL '30 days'
GROUP BY date_trunc('day', timestamp_utc)
)
SELECT
day,
completed_jobs,
LAG(completed_jobs) OVER (ORDER BY day) AS previous_day_jobs,
AVG(completed_jobs) OVER (
ORDER BY day
ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
) AS rolling_7_bucket_average
FROM daily
ORDER BY day;
LAG lee una fila anterior según el orden de las ventanas. Un AVG enmarcado calcula una línea base rodante de siete cubos. Las primeras filas tienen menos de siete depósitos contribuyentes, así que etiquételos o suprímalos cuando se requiera una ventana completa.
Partición por la unidad de comparación.
Agregue PARTITION BY service cuando cada servicio necesite una secuencia independiente. Sin él, la fila anterior puede pertenecer a otro servicio. Las columnas de orden también deben ser deterministas; Si dos eventos comparten una marca de tiempo, agregue un identificador estable como desempate.
ROW_NUMBER es útil para elegir un evento por clave lógica:
ROW_NUMBER() OVER (
PARTITION BY delivery_id
ORDER BY timestamp_utc DESC, event_id DESC
) AS newest_rank
Filtrar a newest_rank = 1 en una consulta externa. Decida si "más nuevo" o "primero aceptado" es la regla comercial correcta antes de utilizar el patrón.
Windows no repara los intervalos de tiempo que faltan, los eventos de origen duplicados ni el grano de fila ambiguo. Valide esas condiciones antes de interpretar un cambio de un período a otro. Lea SQL Deduplicación para conocer las reglas de identidad y DataFusion SQL referencia para conocer la sintaxis de ventana probada por Telemetry.