Skip to main content

Quand l’utiliser

Ceci est utile lorsqu’il existe des tables dont les conventions de nommage et les colonnes sont similaires, mais qui ne sont pas répliquées. C’est par exemple le cas lorsqu’on recherche dans la base de données système des entrées dans les tables du journal des requêtes. La table query_log n’est pas répliquée, et seules les requêtes exécutées sur un nœud spécifique y sont journalisées. Les données peuvent également être basculées vers une autre table. Par exemple, elles peuvent être insérées dans query_log_0, query_log_1, etc. Comme un nœud peut effectuer cette bascule à un moment différent des autres, il est utile d’essayer de trouver les données recherchées dans des tables qui ne portent pas exactement le même nom. En pratique, nous devons faire quelque chose comme ceci, mais avec la syntaxe ClickHouse : SELECT column1, column2 FROM my_db.my_table_* Pour cela, nous pouvons utiliser clusterAllReplicas() pour rechercher sur tous les nœuds, ainsi que la table function merge() afin d’utiliser un motif regex pour rechercher dans plusieurs tables. L’exemple suivant montre comment interroger toutes les tables ayant le préfixe query_log :
Notez que les colonnes que vous sélectionnez doivent exister dans chacune des tables interrogées, faute de quoi vous risquez d’obtenir une erreur du type :
Vous pouvez également utiliser la clause EXCEPT pour exclure les colonnes qui peuvent être absentes de certaines tables. Exemple :
Dernière modification le 3 juillet 2026