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

Коллеги, добрый день! Подскажите, пожалуйста, как правильно сджойнить 2 таблицы в

КХ?
Пытаюсь сджойнить 2 таблицы по 100 млн записей в каждой обычным JOIN' ом- КХ падает.

Слышал, что можно использовать array_join для этих целей, но не совсем понятно как.
Заранее спасибо!

9 ответов

18 просмотров

array join — это обычный explode массивов, к джойну таблиц отношения не имеет а прям надо сджойнить 100млн * 100 млн записей, или можно каждую таблицу "схлопнуть" агрегирующим подзапросом и уже результаты подзапросов джойнить?

Евгений Пименов- Автор вопроса
ivan
array join — это обычный explode массивов, к джойн...

Нет, не декартово произведение. Очень грубо говоря: Есть таблица измерений, и есть таблица фактов. Нужно собрать витрину. Джойню по бизнес-ключу.

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

Можно пробовать SEMI JOIN, ANY JOIN, но 100кк*100кк - в любом случае не лучшая идея, надо сокращать.

Евгений Пименов- Автор вопроса
ivan
я к тому, что таблицу фактов можно сначала сагреги...

То есть что-то типа: SELECT * FROM (SELECT * FROM table1 WHERE id = 1) t1 JOIN (SELECT * FROM table2 WHERE id = 1)t2 ON t1.id = t2.id? Но как тогда реализовать его для всех id? Если я правильно понимаю, в КХ нет PL/pgSQL, чтобы написать цикл по id

Евгений Пименов
То есть что-то типа: SELECT * FROM (SELECT * FROM ...

я имел в виду select * from (select id, sum(), avg() ... from facts group by id) join (select dimensions by id) on t1.id = t2.id

Евгений Пименов- Автор вопроса
ivan
я имел в виду select * from (select id, sum(), avg...

При таком запросе мы же получим уже единствеенную сагрегированную запись для каждого id... А мне нужно сохранить все записи

Евгений Пименов
При таком запросе мы же получим уже единствеенную...

понял боюсь, значит, вы попали в ситуацию "не надо тащить dimensional modeling в clickhouse в том виде, в каком вы привыкли, будут проблемы" можете попробовать найти их решение через join algorithm = partial_merge, или почитать эту страничку https://clickhouse.com/docs/en/getting-started/example-datasets/star-schema или перетащить все джойны на уровень какого-нибудь MPP ETL типа спарка, а в клике держать уже готовые витрины и т.д.

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

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

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