Passer au contenu principal

Description

Le combinateur Map peut être appliqué à la fonction min pour calculer, pour chaque clé, la valeur minimale dans une Map, à l’aide de la fonction de combinateur d’agrégation minMap.

Exemple d’utilisation

Dans cet exemple, nous allons créer une table qui stocke des codes d’état et leur nombre pour différents créneaux horaires, où chaque ligne contient une Map associant des codes d’état à leur nombre correspondant. Nous utiliserons minMap pour trouver le nombre minimal de chaque code d’état dans chaque créneau horaire.
Query
CREATE TABLE metrics(
    date Date,
    timeslot DateTime,
    status Map(String, UInt64)
) ENGINE = MergeTree
ORDER BY ();

INSERT INTO metrics VALUES
    ('2000-01-01', '2000-01-01 00:00:00', (['a', 'b', 'c'], [15, 25, 35])),
    ('2000-01-01', '2000-01-01 00:00:00', (['c', 'd', 'e'], [45, 55, 65])),
    ('2000-01-01', '2000-01-01 00:01:00', (['d', 'e', 'f'], [75, 85, 95])),
    ('2000-01-01', '2000-01-01 00:01:00', (['f', 'g', 'g'], [105, 115, 125]));

SELECT
    timeslot,
    minMap(status),
FROM metrics
GROUP BY timeslot;
La fonction minMap déterminera le nombre minimal pour chaque code d’état dans chaque créneau temporel. Par exemple :
  • Dans le créneau temporel ‘2000-01-01 00:00:00’ :
    • Code d’état ‘a’ : 15
    • Code d’état ‘b’ : 25
    • Code d’état ‘c’ : min(35, 45) = 35
    • Code d’état ‘d’ : 55
    • Code d’état ‘e’ : 65
  • Dans le créneau temporel ‘2000-01-01 00:01:00’ :
    • Code d’état ‘d’ : 75
    • Code d’état ‘e’ : 85
    • Code d’état ‘f’ : min(95, 105) = 95
    • Code d’état ‘g’ : min(115, 125) = 115
Response
   ┌────────────timeslot─┬─minMap(status)───────────────────────┐
1. │ 2000-01-01 00:01:00 │ {'d':75,'e':85,'f':95,'g':115}       │
2. │ 2000-01-01 00:00:00 │ {'a':15,'b':25,'c':35,'d':55,'e':65} │
   └─────────────────────┴──────────────────────────────────────┘

Voir aussi

Dernière modification le 25 juin 2026