есть таблица с 8 колонками
hash_slice(SHA-256),
event_type(String),
news_id(Uint64),
stream_uuid(UUID),
money(Float64),
money_with_commission(Float64),
created_at(Datetime),
sign Int8
Движок таблицы CollapisngMergeTree(sign)
ORDER BY в таблице (hash_slice, event_type)
Нужно сделать аггрегацию этой таблицы, по toStartOfHour(created_at) и hash_slice
Для этих целей был выбран движок SummingMergeTree((money, money_with_commission))
Для 2-х типов событий все колонки кроме money и money_with_commission заполнены, а вот для третьего заполены лишь hash_slice, event_type, money, money_with_commission. А другие равны Null, CH при агрегации в каких то случаях, видимо когда последнее событие с нулами, при агрегации трет поля news_id и stream_uuid и в агрегационной статистике они равны NULL, а иногда нет, как сделать так, чтобы при агрегации нулы игнорировались если в событиях выше или ниже есть данные в колонках stream_uuid или news_id и при агрегации эти колонки всегда были заполнены? Есть идеи?
sign для CollapsingMergeTree не может быть UInt8 сделайте Int8
Я препутал, да, там Int8, спасибо))
уберите для money и money_with_comission Float64 замените на Decimal64 и уберите Nullable пусть будет просто 0 вторая таблица из первой заполняется через Materialized VIEW?
Спасибо)) А почему именно Decimal64?
при суммировании будет не будет ошибок округления из Float float для денег не предназначен
Обсуждают сегодня