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

Всем привет! Помогите плз, создаю мат вьюху в CH -

ниже буквальный код. После создания вьюха не пишет новые данные, хотя похожая вьюха с другим запросом но по сути аналогичным начала писаться нормально и никаких проблем нет! В чем может быть дело ? или может быть все таки что то стоит поменять при создании ?? буду рад если накинете идей куда стоит копать и в чем могут быть причины такого поведения мат вьюх!

CREATE MATERIALIZED VIEW log.users_data_based_on_income_view
ENGINE = SummingMergeTree()
PARTITION BY round(user_id / 1000000)
ORDER BY user_id
SETTINGS index_granularity = 8192 POPULATE AS
SELECT
session__uid AS user_id,
install_date,
uniq(event_date) AS days_in_game,
max(event_date) AS last_session_date,
max(event_time) AS last_session_time,
argMax(event_date - install_date, event_date) AS last_session_days_ago,
argMax(session__payer_type, event_time) AS payer_type,
argMax(session__pay, event_time) AS payer,
argMax(session__league, event_time) AS last_league,
argMax(session__app, event_time) AS last_app,
argMax(session__plt, event_time) AS last_plt,
multiIf(last_plt='vk' AND last_app='1', 'vk',
last_plt='ok' AND last_app='1', 'ok',
last_plt='fb' AND last_app='1', 'fb',
last_app='6', 'android',
last_app='7', 'ios',
last_app='2', 'st',
last_app='12', 'luv',
last_plt='vk' AND last_app IN ('9','10','11'), 'vk_instant',
last_plt='ok' AND last_app IN ('9','10','11'), 'ok_instant',
'other') AS last_platform,
argMax(session__tag, event_time) AS last_tag,
argMax(session__rfm, event_time) AS last_rfm,
count() AS sessions_total,
countIf(event_date - install_date = 0) AS sessions_0,
countIf(event_date - install_date = 1) AS sessions_1,
countIf(event_date - install_date = 3) AS sessions_3,
countIf(event_date - install_date = 7) AS sessions_7,
countIf(event_date - install_date = 14) AS sessions_14,
countIf(event_date - install_date = 30) AS sessions_30,
countIf(event_date - install_date = 90) AS sessions_90,
countIf(event_date - install_date <= 1) AS sessions_cum_1,
countIf(event_date - install_date <= 3) AS sessions_cum_3,
countIf(event_date - install_date <= 7) AS sessions_cum_7,
countIf(event_date - install_date <= 14) AS sessions_cum_14,
countIf(event_date - install_date <= 30) AS sessions_cum_30,
countIf(event_date - install_date <= 90) AS sessions_cum_90,
uniqIf(user_id, event_date - install_date = 1) AS R1,
uniqIf(user_id, event_date - install_date = 3) AS R3,
uniqIf(user_id, event_date - install_date = 7) AS R7,
uniqIf(user_id, event_date - install_date = 14) AS R14,
uniqIf(user_id, event_date - install_date = 30) AS R30,
uniqIf(user_id, event_date - install_date = 90) AS R90,
uniqIf(user_id, event_date - install_date >= 1) AS R1_r,
uniqIf(user_id, event_date - install_date >= 3) AS R3_r,
uniqIf(user_id, event_date - install_date >= 7) AS R7_r,
uniqIf(user_id, event_date - install_date >= 14) AS R14_r,
uniqIf(user_id, event_date - install_date >= 30) AS R30_r,
uniqIf(user_id, event_date - install_date >= 90) AS R90_r
FROM log.events ALL INNER JOIN (
SELECT
DISTINCT
event_date AS install_date,
install__uid AS user_id
FROM log.events
WHERE event = 'install'
) AS r USING user_id
WHERE event = 'session'
GROUP BY
user_id, install_date

7 ответов

17 просмотров

ALL INNER JOIN возвращает пустоту справа ?

Алексей-Веселов Автор вопроса
Denny [Altinity]
ALL INNER JOIN возвращает пустоту справа ?

извините, не совсем понял вопрос, вы имеете ввиду могут ли во внутреннем подзапросе быть такие user_id которых нет во внешнем ? если так то да, могут

Алексей Веселов
извините, не совсем понял вопрос, вы имеете ввиду ...

а вообще в этом запросе в мат.вью log.events -- это не таблица на диске, это данные вставленные инсертом, вставляете одну строку, в log.events будет та самая одна строка

Алексей-Веселов Автор вопроса
Denny [Altinity]
а вообще в этом запросе в мат.вью log.events -- ...

не совсем вас понял ) я не силен в администрировании CH и кажется не все догоняю ) log.events это таблица в данном случае, не вьюха. а я пытаюсь сагрегировать из этой таблицы мат вьюху с агрегатными данными в этой таблицу log.events у нас лежит буквально все и потому все долго грузится если напрямую оттуда брать данные или еще что-то дополнительно мерджить и потому создаю мат вьюху. В log.events 50 столбцов и на них завязано огромное число ивентов через алиасы

Алексей Веселов
не совсем вас понял ) я не силен в администрирован...

сначала сюда https://youtu.be/1LVJ_WcLgF8?list=PLO3lfQbpDVI-hyw4MyqxEk3rDHw95SzxJ&t=7597 https://den-crane.github.io/Everything_you_should_know_about_materialized_views_commented.pdf

Denny [Altinity]
а вообще в этом запросе в мат.вью log.events -- ...

сделайте закреп с вашим пдф, как работает MV в кликхаусе, много вопросов отпадет

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно 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
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта