184 похожих чатов

Добрый день. Есть вопрос по materialized view. 1. Есть базовая

таблица stat_event, куда довольно нагруженно пишутся события (~20 млн/день).
2. Довольно часто требуется анализ этих событий за большой период в разрезе сессий.
3. Для сбора информации по сессии требуется группировка некоторого количества строк, в том числе есть события, по которым требуется не min/max/count, а конкретные значения (access_token)
3. Написанный запрос выбирает корректные данные, но упирается в память на больших объёмах
4. Для анализа сессий было создано MV с группировкой сессионных данных на основе того же запроса.
5. MV отображает корректные данные при вставке в тестовую таблицу значительного количества строк при помощи INSERT SELECT из "боевой" таблицы в консоли (TCP-соединение).
6. MV отображало некорректные данные при вставке в тестовую таблицу значительного количества строк при помощи INSERT SELECT из "боевой" таблицы в IDE (http соединение). После обновления сервера воспроизвести не получается.
7. Переписали боевое использование под TCP-соединение.
8. В настоящий момент MV всё равно отображает некорректные данные при реальном использовании:
- не все события учитываются в MV (видно по значению поля event_count)
- периодически появляется несколько строк с одним PK и всё равно суммарно меньшим, чем должно быть значением event_count.

Подозреваю, что проблема не в CH, а просто я создаю MV с неправильными параметрами или, возможно, неправильно понимаю что-то ещё. Что поправить, чтобы избежать этой ошибки? Ссылки приветствуются.
Спасибо!

5 ответов

31 просмотр

MV не работает с данными из таблицы. Указанный вами запрос получает только один блок данных, который вставляется в таблицу прямо сейчас. Вам нужно пройтись по архиву чата и найти бесчисленные ссылки на статью Денни и видео от Миловидова про работу MV.

Sergey-Svobodsky Автор вопроса
Boris
MV не работает с данными из таблицы. Указанный вам...

Миловидова смотрел, но видимо, не всё, буду искать, спасибо. А Дэнни - это Denis Zhuravlev?

Sergey-Svobodsky Автор вопроса
Boris
https://t.me/clickhouse_ru/251135

Да, ее и нашёл, еще раз спасибо, буду разбираться...

Sergey-Svobodsky Автор вопроса
Boris
https://t.me/clickhouse_ru/251135

Ещё раз спасибо! Очень помогло понять, в какую сторону думать и что искать. До нужного "прямща" уровня разобрался, лишний раз убедился, насколько интересный продукт!

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

Обсуждают сегодня

30500 за редактор? )
Владимир
47
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
вы делали что-то подобное и как? может есть либы готовые? увидел картинку нокода, где всё линиями соединено и стало интересно попробовать то же в ddl на lua сделать. решил с ч...
Victor
8
Подскажите пожалуйста, как в CustomDrawCell(Sender: TcxCustomGridTableView; ACanvas: TcxCanvas; AViewInfo: TcxGridTableDataCellViewInfo; var ADone: Boolean); получить наз...
A Z
7
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
4
Он в одиночку это дело запилил или была какая-то команда?
Aquinary
12
~ 2m21s  nix shell github:nixos/nixpkgs#stack ~  stack ghc -- --version error: … while calling the 'derivationStrict' builtin at /builtin/derivation.nix:...
Rebuild your mind.
6
Всем привет, нужна как никогда, нужна помощь с IO в загрузчике. Пишу в code16 после установки сегментных регистров, пишу вывод символа. Пробовал 2 варианта: # 1 mov $0x0E, %a...
Shadow Akira
14
Карта сайта