DROP MATERIALIZED VIEW if exists mv_last_answers_events; CREATE MATERIALIZED VIEW IF NOT EXISTS mv_answers ENGINE = MergeTree() ORDER BY event_time POPULATE AS SELECT ctxquizid AS quizid, ctxquestionid AS questionid, ctxsession AS session, event_time FROM default.statistics WHERE (message IN ('InfoQuizOpen', 'InfoAnswer', 'InfoResult')) AND (event_level = 'info') LIMIT 1 BY ctxquestionid, ctxsession; CREATE MATERIALIZED VIEW IF NOT EXISTS mv_quiz_open ENGINE = MergeTree() ORDER BY event_time POPULATE AS SELECT ctxquizid AS quizid,ctxquestionid AS questionid, ctxsession AS session, event_time FROM default.statistics WHERE message = 'InfoContactForm'AND event_level = 'info' LIMIT 1 BY ctxquestionid, ctxsession; CREATE VIEW IF NOT EXISTS view_last_answers AS SELECT last_quesion, any(last_quiz) AS quiz, argMax(session, length(questions)) AS long_session FROM default.view_respondent_paths GROUP BY last_quesion; CREATE VIEW IF NOT EXISTS view_pipelines_signs AS SELECT target_quiz, questionid, long_sess FROM ( SELECT questionid, any(quiz) AS target_quiz, any(long_session) AS long_sess, groupArray(last_quesion) AS footsteps FROM default.view_last_answers INNER JOIN default.mv_answers ON long_session = session GROUP BY questionid ) WHERE length(footsteps) = 1; CREATE VIEW IF NOT EXISTS view_respondent_paths AS SELECT session, groupArray(questionid) AS questions, anyLast(questionid) AS last_quesion, anyLast(quizid) AS last_quiz FROM default.mv_answers GROUP BY session; -- тут хранится информация по оплатах пользователей именно успешных, успешность показывает keysuccess = 1 CREATE MATERIALIZED VIEW IF NOT EXISTS ltv_view ENGINE = MergeTree() ORDER BY (ctxuserid) POPULATE AS SELECT create_time, -- время создания ctxuserid, -- id пользователя ctxaccountid, -- id oid в монго ctxprice, -- цена корзины после подсчета скидки ctxrowprice -- цена корзины до скидки FROM default.statistics WHERE keysuccess = 1 and message = 'InfoPayCart'AND event_level = 'info'; CREATE MATERIALIZED VIEW IF NOT EXISTS user_regs_view ENGINE = MergeTree() ORDER BY (ctxuserid) POPULATE AS SELECT create_time, -- время создания ctxuserid, -- id пользователя ctxaccountid, -- oid акканута в монго keyfromsource, -- название сервиса откуда пришел, интересно пока что только quiz keyfromid, -- quiz id откуда с которого пришел пользователь keyfrompartner, -- id пользователя который является партнером (тот кто привел) ctxemail, -- почта пользоователя ctxlogin -- логин пользователя FROM default.statistics WHERE message = 'InfoCreateAccount'AND event_level = 'info'; CREATE MATERIALIZED VIEW IF NOT EXISTS promo_view ENGINE = MergeTree() ORDER BY (ctxuserid) POPULATE AS SELECT create_time, --время создания ctxid, -- id промо в монге ctxuserid, -- id пользователя который активировал ctxcode, -- кодовое слово (заполняется если по нему была активация) ctxpromocodeid -- фастлинк (заполняется если по нему была активация) FROM default.statistics WHERE message IN ( 'InfoPromocodeActivated', 'InfoFastlinkActivated') AND event_level = 'info';