"CollapsingMergeTree Прохожу бесплатный курс по кх ""Managed Service for ClickHouse"". Дошла до модуля 2 про виды движков, и меня настигло озарение ☁️ Вот есть движок CollapsingMergeTree - он сворачивает пары строк, у которых в ключе сортировки одинаковые значения, но при этом поле sign у одной из них равно 1, а у другой -1. Без паники! 🤚 Сейчас поясню на примере ```CREATE TABLE user_activity ( UserID UInt64, --есть пользак PageViews UInt8, --он посетил столько страниц Sign Int8 --системное поле ) ENGINE = CollapsingMergeTree(Sign) ORDER BY UserID; --будем сворачивать по этому полю``` Наш пользак 999 захотел что-то купить: ```INSERT INTO user_activity VALUES (999, 10, 1); --сначала просмотрел 10 страниц INSERT INTO user_activity VALUES (999, 10, -1), --а теперь 10 страниц уже неактуальны (видите -1?) (999, 11, 1); --потому что он просмотрел 11 страниц``` Т.е. тут явно видно, что update = delete + insert, где sign - это флажок удаления Но есть нюанс - теперь в нашей таблице 3 строки, а нужна 1. Почему 3, ведь CollapsingMergeTree как раз и должен сам все объединить? Потому что кх свои слияния производит не сразу, а когда-то потом. Но есть несколько способов получить то, что нужно: 1. FINAL - как будто слияние уже произошло ```SELECT * FROM user_activity FINAL;``` 2. OPTIMIZE - заставляем сделать слияние прямо сейчас. Но у вас может не быть прав на это в продовой базе ```OPTIMIZE TABLE user_activity; SELECT * FROM user_activity; --FINAL уже не нужен``` 3. Посчитать самим ```SELECT UserID, sum(PageViews * Sign) FROM user_activity group by UserID;``` А ведь действительно 10*1 + 10*(-1) + 11*1 дает то, что нужно…"
"CollapsingMergeTree Прохожу бесплатный курс по кх ""Managed Service for…
Из этого канала
- #394"YARN API Иногда могут случаться разные вещи: у вас завис юпитер/вы сделали…
"YARN API Иногда могут случаться разные вещи: у вас завис юпитер/вы сделали что-то не то, и вас заблочили/просто хочется программно килять приложухи.
- #396Новое событие Ходила в прошлом году на E-CODE, было просто бомбезно🔥🔥 Еда,…
Новое событие Ходила в прошлом году на E-CODE, было просто бомбезно🔥🔥 Еда, активности, крутые стримы с лекциями, мерч, туса - и все бесплатно! Пока все…
- #4002. Постановка задач, делегирование, фидбек Продолжаю рассказывать про курс…
2. Постановка задач, делегирование, фидбек Продолжаю рассказывать про курс команды Первый модуль - тут Описание программы - тут Что было? 🤩алгоритм постановки…
- #391Активность коллег в мессенджере в выходные Я несколько раз заглядывала в чаты в…
Активность коллег в мессенджере в выходные Я несколько раз заглядывала в чаты в нерабочее время и видела, что многие коллеги онлайн.
- #390Готовый список задач для DE и не только Зашла тут посмотреть, что на хх…
Готовый список задач для DE и не только Зашла тут посмотреть, что на хх происходит.