Мои кластеры Clickhouse, как показано ниже:
┌─cluster──────┬─shard_num─┬─shard_weight─┬─replica_num─┬─host_name─┬─host_address─┬─port─┬─is_local─┬─user─┬─default_database─┐
│ test_cluster │ 1 │ 1 │ 1 │ 127.0.0.1 │ 127.0.0.1 │ 9000 │ 1 │ test │ │
└──────────────┴───────────┴──────────────┴─────────────┴───────────┴──────────────┴──────┴──────────┴──────┴──────────────────┘
Создание базы данных и таблиц:
create database test;
use test;
CREATE TABLE local_table_1 ( datatime UInt32, datadate Date, number1 UInt32) ENGINE = MergeTree(datadate, datatime, 8192);
CREATE TABLE local_table_2 ( datatime UInt32, datadate Date, number1 UInt32) ENGINE = MergeTree(datadate, datatime, 8192);
CREATE TABLE distributed_table_1 AS local_table_1 ENGINE = Distributed('test_cluster', 'test', local_table_1, rand());
CREATE TABLE distributed_table_2 AS local_table_2 ENGINE = Distributed('test_cluster', 'test', local_table_2, rand());
Вставьте некоторые тестовые данные:
insert into local_table_1 (datatime,datadate,number1) values (1533091943,'2018-08-01',100);
insert into local_table_2 (datatime,datadate,number1) values (1533091943,'2018-08-01',200);
после этого, если мы сделаем запрос с распределенной таблицей, результат не тот, который мы ожидали, и с локальной таблицей все в порядке!
select sum(number1) from merge('test','distributed_table_2|distributed_table_1');
ВЫБРАТЬ сумму (число1)
FROM merge ('test', 'распределенная_таблица_2 | распределенная_таблица_1')
┌─_table──────────────┬─sum(number1)─┐
│ distributed_table_1 │ 100 │
└─────────────────────┴──────────────┘
┌─_table──────────────┬─sum(number1)─┐
│ distributed_table_2 │ 200 │
└─────────────────────┴──────────────┘
select sum(number1) from merge('test','local_table_1|local_table_2');
ВЫБРАТЬ сумму (число1)
FROM merge ('test', 'local_table_1 | local_table_2')
┌─sum(number1)─┐
│ 300 │
└──────────────┘