Skip to main content
Disponible à partir de la version 25.6Ce moteur de table est disponible à partir de la version 25.6 dans OSS et Cloud.
Ce moteur hérite de MergeTree. La principale différence réside dans la manière dont les parties de données sont fusionnées : pour les tables CoalescingMergeTree, ClickHouse remplace toutes les lignes ayant la même clé primaire (ou, plus précisément, la même clé de tri) par une seule ligne contenant, pour chaque colonne, la dernière valeur non-NULL. Cela permet des upserts au niveau des colonnes, ce qui signifie que vous pouvez mettre à jour uniquement certaines colonnes plutôt que des lignes entières. CoalescingMergeTree est conçu pour être utilisé avec des types Nullable dans les colonnes qui ne font pas partie de la clé. Si les colonnes ne sont pas Nullable, le comportement est le même qu’avec ReplacingMergeTree.

Créer une table

Pour une description des paramètres de la requête, consultez la description de la requête.

Paramètres de CoalescingMergeTree

Colonnes

columns - Facultatif. Un tuple contenant les noms des colonnes dont les valeurs seront fusionnées. Les colonnes fournies ne doivent pas figurer dans la partition ni dans la clé de tri. Si columns n’est pas spécifié, ClickHouse fusionne les valeurs de toutes les colonnes qui ne figurent pas dans la clé de tri.

Clauses de requête

Lors de la création d’une table CoalescingMergeTree, les mêmes clauses sont requises que pour la création d’une table MergeTree.

Exemple d’utilisation

Prenons la table suivante :
Insérez-y des données :
Le résultat ressemblera à ceci :
Requête recommandée pour obtenir un résultat correct et définitif :
L’utilisation du modificateur FINAL force ClickHouse à appliquer la logique de fusion à l’exécution de la requête, ce qui garantit l’obtention de la valeur « la plus récente », correcte et consolidée, pour chaque colonne. C’est la méthode la plus sûre et la plus précise pour interroger une table CoalescingMergeTree.
Une approche avec GROUP BY peut renvoyer des résultats incorrects si les parties sous-jacentes n’ont pas été entièrement fusionnées.

Agrégation des éléments de Tuple

Lorsque le paramètre allow_tuple_element_aggregation est activé, les colonnes Tuple sont récursivement aplaties afin que chaque élément terminal participe indépendamment à la coalescence. Cela vous permet de stocker plusieurs champs dans une seule colonne Tuple et de les faire coalescer élément par élément lors des fusions — chaque sous-colonne Nullable conserve indépendamment la dernière valeur non-NULL. Les mêmes règles s’appliquent aux sous-colonnes aplaties qu’aux colonnes ordinaires :
  • Les sous-colonnes appartenant à un Tuple dans la clé de tri ou la clé de partition sont exclues de la coalescence.
  • Si columns est spécifié, seules les sous-colonnes des colonnes Tuple répertoriées sont coalescées.
Ce paramètre est immuable et doit être spécifié lors de la création de la table.
Dernière modification le 23 juillet 2026