O motor Merge (não deve ser confundido com MergeTree) não armazena dados por conta própria, mas permite ler de qualquer número de outras tabelas simultaneamente.
A leitura é paralelizada automaticamente. Não há suporte para escrita em uma tabela. Ao ler, os índices das tabelas que estão realmente sendo lidas são usados, se existirem.
db_name — Valores possíveis:
- nome do banco de dados,
- expressão constante que retorna uma string com o nome de um banco de dados, por exemplo,
currentDatabase(),
REGEXP(expression), em que expression é uma expressão regular para corresponder aos nomes dos bancos de dados.
tables_regexp — Uma expressão regular para corresponder aos nomes das tabelas no DB ou DBs especificados.
Expressões regulares — re2 (oferece suporte a um subconjunto de PCRE), diferenciam maiúsculas de minúsculas.
Veja as observações sobre escape de símbolos em expressões regulares na seção “match”.
Ao selecionar tabelas para leitura, a própria tabela Merge não é selecionada, mesmo que corresponda à expressão regular. Isso evita loops.
É possível criar duas tabelas Merge que tentarão ler indefinidamente os dados uma da outra, mas isso não é uma boa ideia.
A forma mais comum de usar o motor Merge é trabalhar com um grande número de tabelas TinyLog como se fossem uma única tabela.
Exemplo 1
Considere dois bancos de dados, ABC_corporate_site e ABC_store. A tabela all_visitors conterá os IDs das tabelas visitors em ambos os bancos de dados.
Exemplo 2
Digamos que você tenha uma tabela antiga WatchLog_old e tenha decidido alterar o particionamento sem mover os dados para uma nova tabela WatchLog_new, mas precise ver os dados de ambas as tabelas.
-
_table — O nome da tabela da qual os dados foram lidos. Tipo: String.
Se você aplicar um filtro em _table (por exemplo, WHERE _table='xyz'), somente as tabelas que satisfizerem a condição de filtro serão lidas.
-
_database — Contém o nome do banco de dados do qual os dados foram lidos. Tipo: String.
Veja também
Última modificação em 23 de julho de 2026