SQL для маркетолога: 5 запросов к BigQuery, которые заменят часть работы аналитика
Вступление: Зачем маркетологу SQL
Представьте ситуацию: вам нужно понять, почему упала конверсия в прошлую пятницу. Вы пишете аналитику. Ответ: «Очередь на 3 дня».
За это время вы:
Не можете оперативно отреагировать
Тратите бюджет на неработающие гипотезы
Теряете доверие руководства
А теперь представьте: вы сами открываете BigQuery, пишете простой запрос и через минуту видите: «Конверсия упала только на мобильных из-за бага в форме оплаты».
SQL — это не про программирование. Это про независимость.
Вам не нужно быть разработчиком. Достаточно знать 5–10 базовых запросов, чтобы решать 80% маркетинговых задач.
Разбираем 5 конкретных запросов с объяснениями — копируйте, адаптируйте, используйте.
Что нужно для старта
Доступ к BigQuery
Если у вас подключен Google Analytics 4, данные уже там. Проверьте: в интерфейсе GA4 перейдите в «Администратор» → «Интеграция с BigQuery». Если подключено — вы уже на полпути.
Базовое понимание структуры
Данные в BigQuery хранятся в таблицах. Для GA4 это обычно:
events_YYYYMMDD — ежедневные таблицы с событиями
users — данные о пользователях
conversions — цели и покупки
Интерфейс
Можно писать запросы прямо в консоли BigQuery (cloud.google.com/bigquery) или через Google Data Studio. Начните с консоли — там проще видеть результат.
Запрос 1: Конверсии по источникам трафика
Задача: понять, какие каналы приносят реальные покупки, а не просто клики.
SELECT traffic_source, COUNT(DISTINCT user_pseudo_id) as users, COUNTIF(event_name = 'purchase') as purchases, ROUND(COUNTIF(event_name = 'purchase') * 100.0 / COUNT(DISTINCT user_pseudo_id), 2) as conversion_rate FROM `project.dataset.events_*` WHERE _TABLE_SUFFIX BETWEEN '20260301' AND '20260331' GROUP BY traffic_source ORDER BY purchases DESC
Что делает:
Берет данные за март 2026 года
Считает уникальных пользователей по каждому источнику
Считает количество покупок
Считает конверсию в процентах
Сортирует по количеству покупок
Как использовать: Замените project.dataset на ваш идентификатор, поменяйте даты, запустите. Результат покажет: Яндекс.Директ дает 500 покупок с конверсией 3,2%, а таргет в ВК — 120 покупок с конверсией 1,1%. Вывод: перераспределяйте бюджет.
Совет: Добавьте AND event_name = 'session_start' в WHERE, если хотите считать конверсию от сессий, а не от пользователей.
Запрос 2: Коэффициент оттока по когортам
Задача: понять, сколько пользователей возвращаются после первого визита.
SELECT DATE_DIFF(CURRENT_DATE(), DATE(user_first_touch_timestamp), DAY) as days_since_first_visit, COUNT(DISTINCT user_pseudo_id) as total_users, COUNTIF(event_name = 'purchase') as returning_buyers, ROUND(COUNTIF(event_name = 'purchase') * 100.0 / COUNT(DISTINCT user_pseudo_id), 2) as retention_rate FROM `project.dataset.events_*` WHERE user_first_touch_timestamp IS NOT NULL GROUP BY days_since_first_visit ORDER BY days_since_first_visit
Что делает:
Группирует пользователей по количеству дней с первого визита
Считает, сколько из них совершили покупку
Показывает процент удержания для каждой группы
Как использовать: Если видите, что на 7-й день удержание падает с 40% до 12% — значит, после первой недели пользователи «остывают». Запускайте триггерные письма или ретаргетинг на 5–6 день.
Совет: Замените event_name = 'purchase' на event_name = 'login', если хотите отслеживать возвраты, а не покупки.
Запрос 3: Анализ воронки по устройствам
Задача: найти «узкое горлышко» в пути клиента.
SELECT device_category, COUNTIF(event_name = 'view_item') as viewed, COUNTIF(event_name = 'add_to_cart') as added, COUNTIF(event_name = 'begin_checkout') as checkout, COUNTIF(event_name = 'purchase') as purchased, ROUND(COUNTIF(event_name = 'add_to_cart') * 100.0 / COUNTIF(event_name = 'view_item'), 2) as view_to_cart, ROUND(COUNTIF(event_name = 'purchase') * 100.0 / COUNTIF(event_name = 'begin_checkout'), 2) as checkout_to_purchase FROM `project.dataset.events_*` WHERE _TABLE_SUFFIX BETWEEN '20260301' AND '20260331' GROUP BY device_category
Что делает:
Разбивает данные по устройствам: desktop, mobile, tablet
Считает количество пользователей на каждом этапе воронки
Показывает конверсию между этапами
Как использовать: Если на мобильных view_to_cart = 15%, а на десктопе = 35% — проблема в мобильной версии. Проверяйте скорость загрузки, удобство кнопок, форму корзины.
Совет: Добавьте AND geo.country = 'RU', если хотите анализировать только российскую аудиторию.
Запрос 4: Поиск самых ценных пользователей
Задача: выделить аудиторию для ретаргетинга и персонализации.
SELECT user_pseudo_id, COUNTIF(event_name = 'purchase') as total_purchases, SUM(ecommerce.purchase_revenue) as total_revenue, MAX(event_timestamp) as last_activity, ARRAY_AGG(DISTINCT traffic_source IGNORE NULLS LIMIT 5) as top_sources FROM `project.dataset.events_*` WHERE event_name = 'purchase' AND _TABLE_SUFFIX BETWEEN '20260101' AND '20260331' GROUP BY user_pseudo_id HAVING total_revenue > 5000 ORDER BY total_revenue DESC LIMIT 100
Что делает:
Находит пользователей, которые потратили больше 5000 рублей за квартал
Считает количество покупок и общую выручку
Показывает дату последней активности
Собирает топ-5 источников трафика для каждого пользователя
Как использовать: Экспортируйте результат в Google Sheets, загрузите в рекламный кабинет как аудиторию для ретаргетинга. Или передайте в CRM для персонализированных предложений.
Совет: Измените total_revenue > 5000 на порог, который имеет смысл для вашего бизнеса.
Запрос 5: Динамика ключевых метрик по дням
Задача: отслеживать изменения и находить аномалии.
SELECT DATE(event_timestamp) as date, COUNT(DISTINCT user_pseudo_id) as users, COUNTIF(event_name = 'purchase') as purchases, SUM(ecommerce.purchase_revenue) as revenue, ROUND(SUM(ecommerce.purchase_revenue) / COUNTIF(event_name = 'purchase'), 2) as avg_order_value FROM `project.dataset.events_*` WHERE _TABLE_SUFFIX BETWEEN '20260301' AND '20260331' GROUP BY date ORDER BY date
Что делает:
Группирует данные по дням
Считает пользователей, покупки, выручку
Считает средний чек
Показывает динамику во времени
Как использовать: Запустите запрос, скопируйте результат в Google Sheets, постройте график. Если видите резкий спад 15 марта — проверьте: не было ли технических проблем, изменений в рекламе, праздников.
Совет: Добавьте AND traffic_source = 'google-ads', чтобы отслеживать динамику по конкретному каналу.
Результат появится внизу — можно экспортировать в CSV или Google Sheets
Первый запуск: начните с Запроса №1. Замените project.dataset на ваш идентификатор (его можно скопировать из интерфейса GA4 → BigQuery). Укажите актуальные даты. Запустите.
Частые ошибки и как их избежать
Ошибка: «Синтаксическая ошибка»
Чаще всего — забыли кавычки, запятую или точку с запятой. BigQuery подсвечивает ошибку красным. Читайте сообщение: обычно там указано, где именно проблема.
Ошибка: «Доступ запрещен»
У вас нет прав на датасет. Попросите администратора дать роль «BigQuery Job User» или «Viewer».
Ошибка: «Слишком много данных»
Запрос обрабатывается долго или падает. Добавьте фильтр по датам (_TABLE_SUFFIX) или по событиям (event_name = '...').
Ошибка: «Пустой результат»
Проверьте:
Правильно ли указан project.dataset
Есть ли данные за выбранные даты
Правильно ли написаны названия полей (чувствительны к регистру)
Где учиться дальше
Бесплатные ресурсы:
SQLBolt — интерактивные уроки по основам SQL
Google Cloud Skills Boost — курс «BigQuery для начинающих»
YouTube: каналы «Analytics Mania», «MeasureSchool» — разбор запросов для GA4
Практика:
Возьмите один запрос из этой статьи
Запустите на своих данных
Измените один параметр (даты, условие, метрику)
Посмотрите, как изменился результат
Главное правило: не учите «всё подряд». Берите реальную задачу и решайте её запросом.
Сколько времени это экономит
Без SQL:
Запрос аналитику → ожидание 1–3 дня → получение отчета → интерпретация → действие
С SQL:
Открыл консоль → запустил запрос → получил ответ → принял решение
Разница: 3 дня против 5 минут.
Даже если вы тратите час на освоение базовых запросов — это окупается после первого самостоятельного ответа на вопрос «почему упала конверсия?».
Вывод
SQL для маркетолога — это не про то, чтобы стать разработчиком. Это про то, чтобы перестать зависеть от других в поиске ответов.
Вам не нужно знать все функции. Достаточно 5 запросов, чтобы:
Оценивать эффективность каналов
Находить проблемы в воронке
Выделять ценную аудиторию
Отслеживать динамику
Принимать решения на основе данных, а не догадок
Начните сегодня:
Откройте BigQuery
Вставьте Запрос №1
Замените проект и даты
Запустите
Один запрос может дать вам инсайт, который стоит недель работы «вслепую».