Disponible à partir de la version 25.6Ce moteur de table est disponible à partir de la version 25.6 dans OSS et Cloud.
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
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
CoalescingMergeTree, les mêmes clauses sont requises que pour la création d’une table MergeTree.
Exemple d’utilisation
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
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
Tupledans la clé de tri ou la clé de partition sont exclues de la coalescence. - Si
columnsest spécifié, seules les sous-colonnes des colonnesTuplerépertoriées sont coalescées.
Ce paramètre est immuable et doit être spécifié lors de la création de la table.