Блог GORA WEB

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', чтобы отслеживать динамику по конкретному каналу.

Как запускать запросы (пошагово)

  1. Откройте консоль BigQuery: cloud.google.com/bigquery
  2. В левом меню найдите ваш проект и датасет
  3. Нажмите «Создать запрос»
  4. Вставьте код запроса в редактор
  5. Нажмите «Выполнить»
  6. Результат появится внизу — можно экспортировать в 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 запросов, чтобы:
  • Оценивать эффективность каналов
  • Находить проблемы в воронке
  • Выделять ценную аудиторию
  • Отслеживать динамику
  • Принимать решения на основе данных, а не догадок
Начните сегодня:
  1. Откройте BigQuery
  2. Вставьте Запрос №1
  3. Замените проект и даты
  4. Запустите
Один запрос может дать вам инсайт, который стоит недель работы «вслепую».

GORAWEB - разработка и продвижение сайтов
2026-04-07 22:00 Разработка