запрос clickhouse на распределенной таблице с использованием функции агрегирования - PullRequest
0 голосов
/ 11 сентября 2018

Мои кластеры 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 │
└──────────────┘
...