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

Добрый день! Подскажите, есть широкая таблица примерно такого содержания: client1 event1

data1
client1 event2 data2
client2 event1 data1
client2 event2 data2
client3 event1 data1
client3 event3 data3
Как можно выбрать таких клиентов, у которых есть event1 и event2 одновременно?
То есть в данном примере должны выбраться
client1 и client2

6 ответов

8 просмотров

Мне кажется, вам подойдёт что-то типа hasAll(groupUniqArray(event_id), [event1, event2])

вариант через hasAll неплохой Единственное что можно еще посоветовать если позволяет логика в WHERE написать event IN ('event1', 'event2')

Alexander-Morgunov Автор вопроса
Dmitry [Altinity] Titov
вариант через hasAll неплохой Единственное что мож...

Немного не понял каким образом? Простой IN вернёт строчки, которые содержат хоть один из эвентов. Есть ещё вариант, конечно, делать только одну строчку на клиента, эвенты сделать массивами и обновлять строчку через Replacing или Aggregating. На самом деле у нас схема примерно такая и есть сейчас. Клиент всегда один, а собираем все его эвенты (их немного, буквально до 10, соответственно массивы тоже небольшие) и в ReplacingMergeTree храним. Интересует именно быстрота поиска. Будет быстрее смотреть на заранее составленный массив в колонке с типом array или составлять массив через groupArray и искать уже в нем?

Alexander Morgunov
Немного не понял каким образом? Простой IN вернёт ...

IN позволит отбросить все неподходящие строчки -> меньше данных для агрегации -> быстрее агрегация.

Alexander-Morgunov Автор вопроса
Alexander Morgunov
Немного не понял каким образом? Простой IN вернёт ...

То есть сейчас у нас что-то вроде client1 [event1, event2] [data1, data2] client2 [event1, event2] [data1, data2] client3 [event3, event2] [data3, data2] но это сложнее хранить и обрабатывать как отдельные эвенты

Alexander-Morgunov Автор вопроса
Dmitry [Altinity] Titov
IN позволит отбросить все неподходящие строчки -> ...

А если не сложно, можно пример запроса? Вы имеете в виду, что перед groupArray сделать фильтр по WHERE IN?

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

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

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