Skip to main content
El motor hereda de MergeTree. La diferencia es que, al fusionar partes de datos en tablas SummingMergeTree, ClickHouse sustituye todas las filas con la misma clave primaria (o, más exactamente, con la misma clave de ordenación) por una sola fila que contiene los valores sumados de las columnas con tipo de dato numérico. Si la clave de ordenación está compuesta de tal manera que un único valor de clave corresponde a un gran número de filas, esto reduce significativamente el volumen de almacenamiento y acelera la consulta de datos. Recomendamos usar este motor junto con MergeTree. Almacene los datos completos en una tabla MergeTree y use SummingMergeTree para almacenar datos agregados, por ejemplo, al preparar informes. Este enfoque evitará la pérdida de datos valiosos debido a una clave primaria mal definida.

Crear una tabla

Para obtener una descripción de los parámetros de la solicitud, consulte descripción de la solicitud.

Parámetros de SummingMergeTree

Columnas

columns - una tupla con los nombres de las columnas cuyos valores se sumarán. Parámetro opcional. Las columnas deben ser de tipo numérico y no deben formar parte de la partición ni de la clave de ordenación. Si no se especifica columns, ClickHouse suma los valores de todas las columnas de tipo de datos numérico que no formen parte de la clave de ordenación.

Cláusulas de consulta

Al crear una tabla SummingMergeTree, se requieren las mismas cláusulas que al crear una tabla MergeTree.

Ejemplo de uso

Considere la siguiente tabla:
Inserta datos en ella:
ClickHouse puede no sumar completamente todas las filas (ver abajo), por lo que usamos la función de agregación sum y la cláusula GROUP BY en la consulta.

Procesamiento de datos

Cuando los datos se insertan en una tabla, se guardan tal cual. ClickHouse fusiona periódicamente las partes de datos insertadas, y es entonces cuando las filas con la misma clave primaria se suman y se sustituyen por una sola fila en cada parte de datos resultante. ClickHouse puede fusionar las partes de datos de modo que distintas partes de datos resultantes puedan contener filas con la misma clave primaria; es decir, la suma será incompleta. Por lo tanto, en una consulta (SELECT) se deben usar una función de agregación sum() y la cláusula GROUP BY, como se describe en el ejemplo anterior.

Reglas comunes para la suma

Se suman los valores de las columnas con tipo de dato numérico. El conjunto de columnas se define mediante el parámetro columns. Si los valores eran 0 en todas las columnas que se suman, la fila se elimina. Si una columna no forma parte de la clave primaria y no se suma, se selecciona un valor arbitrario de los existentes. Los valores no se suman en las columnas de la clave primaria.

La suma en las columnas de AggregateFunction

En las columnas de tipo AggregateFunction, ClickHouse se comporta como el motor AggregatingMergeTree, agregando de acuerdo con la función.

Estructuras anidadas

Una tabla puede tener estructuras de datos anidadas que se procesan de forma especial. Si el nombre de una tabla anidada termina en Map y contiene al menos dos columnas que cumplen los siguientes criterios:
  • la primera columna es numérica (*Int*, Date, DateTime) o de cadena (String, FixedString), llamémosla key,
  • las demás columnas son aritméticas (*Int*, Float32/64), llamémoslas (values...),
entonces esta tabla anidada se interpreta como una correspondencia de key => (values...), y al fusionar sus filas, los elementos de ambos conjuntos de datos se combinan por key, sumando los (values...) correspondientes. Ejemplos:
Al solicitar datos, utilice la función sumMap(key, value) para agregar Map. En una estructura de datos anidada, no es necesario especificar sus columnas en la tupla de columnas para la suma.

Agregación de elementos de Tuple

Cuando la configuración allow_tuple_element_aggregation está habilitada, las columnas Tuple se aplanan de forma recursiva para que cada elemento hoja participe en la suma de forma independiente. Esto le permite almacenar varias métricas en una sola columna Tuple y hacer que se sumen elemento a elemento durante las fusiones. A las subcolumnas aplanadas se les aplican las mismas reglas que a las columnas normales:
  • Solo se suman las subcolumnas numéricas.
  • Las subcolumnas que pertenecen a un Tuple en la clave de ordenación o en la clave de partición se excluyen de la suma.
  • Si se especifica columns, solo se suman las subcolumnas de las columnas Tuple incluidas en la lista.
  • Si todas las subcolumnas numéricas de una fila son cero después de la suma, la fila se elimina.
Esta configuración es inmutable y debe especificarse al crear la tabla.
Última modificación el 23 de julio de 2026