Привет, коллеги! С вами снова Евгений Буторин, ментор курса «Аналитик данных» 👋🏻
Раньше, когда нужно было обновить отчёт за последний месяц, я либо тянул ВЕСЬ период данных (гигантский объём), либо вручную правил даты в 20 разных местах запроса.
Оба варианта — боль 😥
Теперь я использую динамические переменные в процедурах и могу быстро изменить их под свои нужды — например, если нужно обновить один конкретный месяц.
Как это выглядит:
DECLARE @StartDate DATE = add_months(trunc(sysdate,’mm’),-2);
DECLARE @EndDate DATE = last_day(trunc(sysdate));
DELETE FROM table WHERE Date BETWEEN @StartDate AND @EndDate;
COMMIT;
INSERT INTO table
SELECT
Channel,
COUNT(*) AS Leads,
SUM(CASE WHEN Status = 'Купил' THEN 1 ELSE 0 END) AS Sales,
SUM(CASE WHEN Status = 'Купил' THEN 1 ELSE 0 END) * 1.0 / COUNT(*) AS ConvRate
FROM MarketingLeads
WHERE Date BETWEEN @StartDate AND @EndDate
GROUP BY Channel;
COMMIT;
Всё. Хочу пересчитать апрель 2024 года — меняю переменные на две даты в начале процедуры и запускаю запрос заново. Никаких правок в 20 местах. При этом другие периоды не меняются, что исключает эффект «плавающих данных».
Возможно это выглядит сложно, но на деле мы не становимся сразу сеньорами (старшими аналитиками), мы учимся постоянно и дорабатываем свои скрипты.
➡️ Записаться на поток с моим менторством (стартуем сегодня!): simulative.ru/data-analyst
📈 Симулейтив | ВК | YouTube