Disponible a partir de la versión 25.6Este motor de tabla está disponible a partir de la versión 25.6, tanto en OSS como en Cloud.
CoalescingMergeTree, ClickHouse sustituye todas las filas con la misma clave primaria (o, más precisamente, la misma clave de ordenación) por una sola fila que contiene, para cada columna, el valor distinto de NULL más reciente.
Esto permite realizar upserts a nivel de columna, lo que significa que puedes actualizar solo columnas concretas en lugar de filas completas.
CoalescingMergeTree está pensado para usarse con tipos Nullable en columnas que no forman parte de la clave. Si las columnas no son Nullable, el comportamiento es el mismo que con ReplacingMergeTree.
Crear una tabla
Parámetros de CoalescingMergeTree
Columnas
columns - Opcional. Una tupla con los nombres de las columnas cuyos valores se combinarán. Las columnas proporcionadas no deben formar parte de la partición ni de la clave de ordenación. Si no se especifica columns, ClickHouse combina los valores de todas las columnas que no forman parte de la clave de ordenación.
Cláusulas de consulta
CoalescingMergeTree, se requieren las mismas cláusulas que al crear una tabla MergeTree.
Ejemplo de uso
FINAL obliga a ClickHouse a aplicar la lógica de fusión en tiempo de consulta, lo que garantiza que obtengas el valor “más reciente” correcto y consolidado para cada columna. Este es el método más seguro y preciso al consultar una tabla CoalescingMergeTree.
Un enfoque con
GROUP BY puede devolver resultados incorrectos si las partes subyacentes no se han fusionado por completo.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 coalescencia de manera independiente. Esto permite almacenar varios campos en una sola columna Tuple y que se coaleszcan por elemento durante las fusiones; cada subcolumna Nullable conserva de manera independiente el valor distinto de NULL más reciente.
A las subcolumnas aplanadas se les aplican las mismas reglas que a las columnas normales:
- Las subcolumnas que pertenecen a un
Tuplede la clave de ordenación o de la clave de partición se excluyen de la coalescencia. - Si se especifica
columns, solo se coalescen las subcolumnas de las columnasTupleincluidas en la lista.
Esta configuración es inmutable y debe especificarse al crear la tabla.