Descripción
El combinador If puede aplicarse a la función quantilesTiming
para calcular cuantiles de valores temporales para las filas en las que se cumple la condición,
mediante la función de combinador de agregación quantilesTimingIf.
Ejemplo de uso
En este ejemplo, crearemos una tabla que almacena los tiempos de respuesta de la API para distintos endpoints,
y usaremos quantilesTimingIf para calcular los cuantiles del tiempo de respuesta de las solicitudes exitosas.
CREATE TABLE api_responses(
endpoint String,
response_time_ms UInt32,
is_successful UInt8
) ENGINE = MergeTree
ORDER BY ();
INSERT INTO api_responses VALUES
('orders', 82, 1),
('orders', 94, 1),
('orders', 98, 1),
('orders', 87, 1),
('orders', 103, 1),
('orders', 92, 1),
('orders', 89, 1),
('orders', 105, 1),
('products', 45, 1),
('products', 52, 1),
('products', 48, 1),
('products', 51, 1),
('products', 49, 1),
('products', 53, 1),
('products', 47, 1),
('products', 50, 1),
('users', 120, 0),
('users', 125, 0),
('users', 118, 0),
('users', 122, 0),
('users', 121, 0),
('users', 119, 0),
('users', 123, 0),
('users', 124, 0);
SELECT
endpoint,
quantilesTimingIf(0, 0.25, 0.5, 0.75, 0.95, 0.99, 1.0)(response_time_ms, is_successful = 1) as response_time_quantiles
FROM api_responses
GROUP BY endpoint;La función quantilesTimingIf calculará cuantiles solo para las solicitudes exitosas (is_successful = 1).
El array devuelto contiene los siguientes cuantiles en este orden:
- 0 (mínimo)
- 0.25 (primer cuartil)
- 0.5 (mediana)
- 0.75 (tercer cuartil)
- 0.95 (percentil 95)
- 0.99 (percentil 99)
- 1.0 (máximo)
┌─endpoint─┬─response_time_quantiles─────────────────────────────────────────────┐
1. │ orders │ [82, 87, 92, 98, 103, 104, 105] │
2. │ products │ [45, 47, 49, 51, 52, 52, 53] │
3. │ users │ [nan, nan, nan, nan, nan, nan, nan] │
└──────────┴─────────────────────────────────────────────────────────────────────┘