Тут сделаны миграции и хендлеры для того чтобы выдавать ltv для промокода и недо партнёрка по переходам через ссылку в лого опроса
91 lines
3.9 KiB
SQL
91 lines
3.9 KiB
SQL
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'; |