common/dal/ch_schema/000001_init.up.sql

91 lines
3.9 KiB
MySQL
Raw Normal View History

DROP MATERIALIZED VIEW if exists mv_last_answers_events;
2024-07-02 08:18:00 +00:00
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;
2024-07-02 08:18:00 +00:00
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';