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

Кстати, кто-нибудь знает, как бороться с GROUP BY на больших

пачках?

У нас стоит ReplacingMergeTree, т.е. в базе данных есть дубликаты, которые неизвестно когда мёржатся. Нужно брать самые актуальные значения по полю <time>. Я использую argMax(<field>, time). Но так же нужна группировка по ID'шнику (ведь есть дубликаты). Clickhouse уже при паре миллионов записей начинает задыхаться (потребляет очень много памяти).

К примеру:

В базе данных есть поле, отвечающее за тип события. API позволяет запросить данные, удовлетворяющие условию: все данные, у которых данные события <values> являются последними.

Грубо говоря, есть данные:

message_id | event_type | event_time
-----------|------------|---------------------
000F010D | 15, | 04:16:04.258567879Z
000F010D | 16 | 04:18:31.027178631Z
000F010D | 12 | 04:55:31.027178631 -- последнее событие
FFF11111 | 1, | 05:16:04.258567879Z
FFF11111 | 2 | 05:18:31.027178631Z
FFF11111 | 15 | 05:18:32.027178631Z
FFF11111 | 15 | 05:18:38.027178631Z
FFF11111 | 11 | 05:55:39.027178631 -- последнее событие
AAAAAAAA | 1, | 06:16:04.258567879Z
AAAAAAAA | 11 | 06:55:39.027178631 -- последнее событие

Запрос:

SELECT
...,
argMax(last_event_type, last_event_time) as max_last_event_time
FROM table_1
WHERE (...)
GROUP BY message_id
HAVING max_last_event_time in (12, 11)
LIMIT 0, 10;

Вернет:

message_id | event_type | event_time
-----------|------------|---------------------
000F010D | 12 | 04:55:31.027178631 -- последнее событие
FFF11111 | 11 | 05:55:39.027178631 -- последнее событие
AAAAAAAA | 11 | 06:55:39.027178631 -- последнее событие

Я делаю подзапрос без GROUP BY с ограничением выборки (в 1000), к примеру. И уже её группирую. Получается по факту некорректно, но это пока единственный способ не задохнуться.

2 ответов

24 просмотра

https://clickhouse.com/docs/en/sql-reference/statements/select/group-by#group-by-in-external-memory Плохой вариант, но может поможет

Владислав-Белоусов Автор вопроса
C
https://clickhouse.com/docs/en/sql-reference/state...

Спасибо! Попробую на днях!

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

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

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
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
Карта сайта