El combinador State
puede aplicarse a la función avg
para generar un estado intermedio de tipo AggregateFunction(avg, T), donde
T es el tipo especificado para el promedio.
En este ejemplo, veremos cómo usar el tipo AggregateFunction,
junto con la función avgState para agregar datos de tráfico de sitios web.
Primero, cree la tabla de origen para los datos de tráfico del sitio web:
Cree la tabla de agregación que almacenará los tiempos de respuesta promedio. Tenga en cuenta que
avg no puede usar el tipo SimpleAggregateFunction, ya que requiere un estado complejo
(una suma y un recuento). Por ello, se utiliza el tipo AggregateFunction:
Crea una vista materializada incremental que actuará como disparador de inserción para
los nuevos datos y almacenará el estado intermedio en la tabla de destino definida anteriormente:
Inserte algunos datos iniciales en la tabla de origen para crear una parte en disco:
Inserta más datos para crear una segunda parte en disco:
Examine la tabla de destino page_performance:
Observe que la columna avg_response_time es de tipo AggregateFunction(avg, UInt32)
y almacena información de estado intermedio. Observe también que los datos de la fila para
avg_response_time no son de utilidad y que aparecen caracteres extraños como
�, n, F, }. Esto se debe a que el terminal intenta mostrar datos binarios como texto.
El motivo es que los tipos AggregateFunction almacenan su estado en un
formato binario optimizado para un almacenamiento y procesamiento eficientes, no para
ser legible por humanos. Este estado binario contiene toda la información necesaria para
calcular el promedio.
Para utilizarlo, use el combinador Merge:
Ahora vemos los promedios correctos:
Última modificación el 2 de julio de 2026