common/dal/ch_schema/000001_init.up.sql
skeris 81c3a9e4d4 Вручную сосквошил chMigrate, чтобы понимать происходящее. Ничего не понял толком.
Тут сделаны миграции и хендлеры для того чтобы выдавать ltv для промокода и недо партнёрка по переходам через ссылку в лого  опроса
2025-05-10 23:41:38 +03:00

91 lines
3.9 KiB
SQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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';