Saltar al contenido principal

Descripción

El combinador Map se puede aplicar a la función min para calcular el valor mínimo de un Map para cada clave, mediante la función de combinador de agregación minMap.

Ejemplo de uso

En este ejemplo, crearemos una tabla que almacena códigos de estado y sus recuentos para distintas franjas horarias, donde cada fila contiene un Map de códigos de estado con sus recuentos correspondientes. Usaremos minMap para encontrar el recuento mínimo de cada código de estado en cada franja horaria.
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 función minMap encontrará el recuento mínimo de cada código de estado dentro de cada franja horaria. Por ejemplo:
  • En la franja horaria ‘2000-01-01 00:00:00’:
    • Código de estado ‘a’: 15
    • Código de estado ‘b’: 25
    • Código de estado ‘c’: min(35, 45) = 35
    • Código de estado ‘d’: 55
    • Código de estado ‘e’: 65
  • En la franja horaria ‘2000-01-01 00:01:00’:
    • Código de estado ‘d’: 75
    • Código de estado ‘e’: 85
    • Código de estado ‘f’: min(95, 105) = 95
    • Código de estado ‘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} │
   └─────────────────────┴──────────────────────────────────────┘

Véase también

Última modificación el 10 de junio de 2026