Skip to main content

Когда это использовать

Это полезно, когда есть таблицы с похожими соглашениями об именовании и схожими столбцами, но без репликации. Например, при поиске записей в таблицах логов запросов в системной базе данных. Таблица query_log не реплицируется, и в нее записываются только те запросы, которые выполняются на конкретном узле. Данные также могут перемещаться в другую таблицу. Например, они могут вставляться в query_log_0, query_log_1 и т. д. Поскольку на одном узле это может происходить в другое время, чем на остальных, полезно искать нужные данные в таблицах, имена которых не совпадают в точности. По сути, нам нужно сделать что-то вроде этого, но в синтаксисе ClickHouse: SELECT column1, column2 FROM my_db.my_table_* Для этого можно использовать clusterAllReplicas() для поиска по всем узлам и табличную функцию merge(), чтобы применять шаблон регулярного выражения при поиске по нескольким таблицам. Следующий пример показывает, как выполнить запрос ко всем таблицам с префиксом query_log:
Обратите внимание, что выбранные вами столбцы должны существовать во всех запрашиваемых таблицах, иначе может возникнуть ошибка, например:
Либо можно использовать предложение EXCEPT, чтобы исключить столбцы, которых может не быть в разных таблицах. пример:
Последнее изменение 3 июля 2026 г.