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

То есть данные из двух таблиц нужно будет запрашивать одновременно?

14 ответов

23 просмотра

вам надо одновременно и count и сырые данные видеть? Обычно нужны агрегированные данные для статистики. А по сырым уже какие-то точечные запросы

palinaaaaaa-👽 Автор вопроса
Konstantin Ilchenko
вам надо одновременно и count и сырые данные видет...

да, не проблема просто суммировать count (по умолчанию 1), а сжатые данные > 1 будут, = SUM(count) — кол-во сообщений

palinaaaaaa 👽
да, не проблема просто суммировать count (по умолч...

ну так если вы можете агрегировать на лету, вам не надо делать запросы по сырым данным

palinaaaaaa-👽 Автор вопроса
palinaaaaaa 👽
да, не проблема просто суммировать count (по умолч...

а вариант сделать так: сначала записывать сырые данные, потом в полночь искать эти данные, удалять за один день через ALTER, после чего вставлять новую запись с данными за день, какие проблемы могут быть?

palinaaaaaa-👽 Автор вопроса
palinaaaaaa 👽
объем чего?

Записей. Как всего, так и удаляемых. Альтерить то надо по строке..

palinaaaaaa 👽
а вариант сделать так: сначала записывать сырые да...

звучит как реизобретение GraphiteMergeTree https://clickhouse.tech/docs/ru/engines/table-engines/mergetree-family/graphitemergetree/

palinaaaaaa-👽 Автор вопроса
Vladimir Goncharov
звучит как реизобретение GraphiteMergeTree https:/...

в нём можно будет получать информацию по дням, от определённого человека?

palinaaaaaa 👽
а вариант сделать так: сначала записывать сырые да...

зачем так хитро с графитом? Им вобще кто-то пользуется, кроме тех кто сделал? В КХ есть специально придуманная для вашей задачи AggregatingMergeThree. Почитайте про нее. Если вкратце, то вы как обычно делаете вставку в основную таблицу по 10-100к строк, затем через MV частично аггрегируете этот блок : create materialized view metrics ENGINE = AggregatingMergeTree order by (id,ts) as SELECT id , toStartOfDay(ts) ts, avgState(temp_val) temp_val, countState() qty FROM metrics GROUP BY id, ts; в результате в таблице в которую пишет MV будут лежать не конечные аггрегированные значения, а промежуточные, с типом AggregateFunction. Их можно легко слить друг с другом. Скажем для avg это два числа sum и count (потом можно поделить для получения среднего). Для слияния двух пар состояний мы складываем суммы и каунты. Для других аггрегационных функций состояния сложнее и могут занимать много места (скажем для groupArray - это все элементы массива). Для sum наоборот - все слишком просто и состояние равно результату функции, поэтому придуманы SimpleAggregateFunction, которые легче, но позволяют согласовать синтаксис типов данных в функциях выполняющих доаггрегацию (-Merge). В обычном процессе мерджинга партов все такие состояния сливаются, и вы получаете почти то, что хотели - аггрегированные за сутки данные. Причем результаты доступны в любой момент, и без скриптов что-то там стирающих в ночи.

Boris
зачем так хитро с графитом? Им вобще кто-то пользу...

А если идет удаление данных из исходной таблицы на MV это же не отражается? В таком случае надо чистить MV отдельно?

Evgeniy Sergeev
А если идет удаление данных из исходной таблицы на...

почистить будет непросто. лучше не удалять. "что написано пером - не вырубишь...." Для суммы есть старый бухгалтерский трюк под названием сторнирование - сделать отрицательную проводку. Просто вставляйте строку с минусовым значением, сумма и уменьшится.

Boris
почистить будет непросто. лучше не удалять. "что...

Это понятно, что так идеологически правильно. Но на Alter Delete из исходной таблицы MV никак не реагирует?

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
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
Карта сайта