AggregatingMergeTree para la agregación incremental de datos, incluidas las vistas materializadas agregadas.
A continuación, puede ver un ejemplo de cómo usar AggregatingMergeTree y las funciones de agregación en el siguiente video:
AggregatingMergeTree si reduce el número de filas en varios órdenes de magnitud.
Crear una tabla
AggregatingMergeTree, se requieren las mismas cláusulas que al crear una tabla MergeTree.
SELECT e INSERT
AggregatingMergeTree, use la cláusula GROUP BY y las mismas funciones de agregación que al insertar datos, pero usando el sufijo -Merge.
En los resultados de la consulta SELECT, los valores del tipo AggregateFunction tienen una representación binaria específica de la implementación en todos los formatos de salida de ClickHouse. Por ejemplo, si vuelca datos al formato TabSeparated con una consulta SELECT, este volcado puede volver a cargarse usando una consulta INSERT.
Ejemplo de una vista materializada agregada
test. Si aún no existe, créala con el siguiente comando:
test.visits que contiene los datos sin procesar:
AggregatingMergeTree que almacene AggregationFunctions para llevar el registro del número total de visitas y del número de usuarios únicos.
Crea una vista materializada AggregatingMergeTree que monitorice la tabla test.visits y utilice el tipo AggregateFunction:
test.agg_visits a partir de test.visits:
test.visits:
test.visits como en test.agg_visits.
Para obtener los datos agregados, ejecute una consulta como SELECT ... GROUP BY ... desde la vista materializada test.visits_mv:
test.visits, pero esta vez utiliza un timestamp diferente para uno de los registros:
SELECT, que devolverá el siguiente resultado:
GROUP BY
de la definición de la vista materializada para evitar un error. Sin embargo, puede utilizar la función initializeAggregation
con el parámetro optimize_on_insert = 0 (activado por defecto) para lograr esto. En este caso, ya no es necesario usar GROUP BY:
Al usar
initializeAggregation, se crea un estado de agregación para cada fila individual, sin agrupar.
Cada fila de origen produce una fila en la vista materializada, y la agregación real se realiza más tarde, cuando
AggregatingMergeTree fusiona las partes. Esto solo es cierto si optimize_on_insert = 0.Agregación de elementos de Tuple
allow_tuple_element_aggregation está habilitada, las columnas Tuple se aplanan de forma recursiva para que cada elemento hoja participe en la agregación de manera independiente. Esto significa que las subcolumnas AggregateFunction o SimpleAggregateFunction dentro de un Tuple se agregan según sus respectivas funciones, como si fueran columnas de nivel superior.
Las subcolumnas que pertenecen a un Tuple en la clave de ordenación se excluyen de la agregación. Las subcolumnas no agregadas se tratan como columnas ordinarias (se conserva el primer valor).
Esta configuración es inmutable y debe especificarse al crear la tabla.
total_visits se agrega mediante sum (100 + 200 = 300), mientras que unique_users se agrega mediante max (max(5, 8) = 8).