Description
Les combinateurs Array et If
peuvent être appliqués à la fonction quantilesTiming
pour calculer les quantiles des valeurs de temps dans des tableaux pour les lignes où la condition est true,
à l’aide de la fonction de combinateur d’agrégation quantilesTimingArrayIf.
Exemple d’utilisation
Dans cet exemple, nous allons créer une table qui stocke les temps de réponse de l’API pour différents endpoints,
et utiliser quantilesTimingArrayIf pour calculer les quantiles des temps de réponse pour les requêtes ayant abouti.
CREATE TABLE api_responses(
endpoint String,
response_times_ms Array(UInt32),
success_rate Float32
) ENGINE = MergeTree
ORDER BY ();
INSERT INTO api_responses VALUES
('orders', [82, 94, 98, 87, 103, 92, 89, 105], 0.98),
('products', [45, 52, 48, 51, 49, 53, 47, 50], 0.95),
('users', [120, 125, 118, 122, 121, 119, 123, 124], 0.92);
SELECT
endpoint,
quantilesTimingArrayIf(0, 0.25, 0.5, 0.75, 0.95, 0.99, 1.0)(response_times_ms, success_rate >= 0.95) as response_time_quantiles
FROM api_responses
GROUP BY endpoint;La fonction quantilesTimingArrayIf calcule des quantiles uniquement pour les endpoints dont le taux de réussite est supérieur à 95 %.
Le tableau renvoyé contient les quantiles suivants dans l’ordre :
- 0 (minimum)
- 0.25 (premier quartile)
- 0.5 (médiane)
- 0.75 (troisième quartile)
- 0.95 (95e percentile)
- 0.99 (99e percentile)
- 1.0 (maximum)
┌─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] │
└──────────┴─────────────────────────────────────────────────────────────────────┘