@alexeygavrilovs

Как сгруппировать данные в clickhouse если есть несколько временных меток?

Всем добрый день, уже несколько дней думаю над проблемой, у меня есть таблица, которая заполняется с kafka. Имеет вид:
{
u_id UUID,
event_1 bool|int
event_1_time datetime
event_2 bool|time
event_2_time datetime
event_n bool|int
event_n_time datetime
}


Соответсвенно с kafka данные прилетают кусками, и если поля с типом bool или int можно сделать Nullable(), то с типом datetime всё не так, и nullable его не сделать, соответсвенно 1 поле event_n_time записывается как нужно, остальные принимают значение 1970-01-01 03:00:00. Из-за этого engine SummingMergeTree тут не применить , а с обычном MergeTree возникают проблемы при
select * from table where event_n_time < time() group by DATE(event_1_time)
  • Вопрос задан
  • 118 просмотров
Пригласить эксперта
Ответы на вопрос 1
sasha-hohloma
@sasha-hohloma
Fullstack Developer
Я бы предложил изменить структуру хранения, если есть такая возможность. По идее, одна table должна отвечать за один event, а уже множество event_table_n хранится в одной database. Если такой возможности нет, то можно выносить разные event в разные materialized view по условию, но при большом количестве mv (и триггеров) может сильно возрасти нагрузка на инстанс ClickHouse. Поэтому лучше разделить таблицы архитектурном уровне и продумать маршрутизацию данных, тогда получится достичь оптимального баланса между записью и чтением данных
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы