Взаимодействие с информационными центрами и аналитическими платформами требует понимания структуры данных и синтаксиса языков запросов (чаще всего SQL). Ниже представлен подробный обзор типовых образцов запросов, основанных на официальной документации Google Analytics 4 (GA4) для экспорта данных в BigQuery. Приведенные примеры демонстрируют базовые паттерны извлечения, агрегации и анализа событийных данных, актуальные на .
Общие принципы работы с образцами запросов
Все приведенные ниже примеры используют образцы наборов данных (public datasets). Это означает, что они возвращают действительные результаты сразу после запуска в консоли BigQuery.
Адаптация под свои данные
Для работы с реальными экспортированными данными вашего ресурса GA4 необходимо выполнить замену идентификатора таблицы.
- Найдите в запросе комментарий
-- Replace table. - Замените идентификатор образца набора данных на идентификатор вашего проекта.
— Образец (заменяется):
bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*
— Ваш реальный идентификатор (пример):
my-first-gcp-project.analytics_* .events_*
Примечание: Идентификатор набора данных экспорта BigQuery можно найти в интерфейсе BigQuery на странице проекта BigQuery Export. Чувствительные части ID проекта и номера ресурса в примере выше замаскированы (*).
Фильтрация по дате: псевдостолбец _TABLE_SUFFIX
Таблицы событий в экспорте GA4 секционированы по дням (суффикс таблицы — это дата в формате YYYYMMDD). Для запроса за конкретный диапазон дат используйте условие WHERE с псевдостолбцом _TABLE_SUFFIX.
WHERE _TABLE_SUFFIX BETWEEN '20201201' AND '20201202' Базовые образцы аналитических запросов
Подсчет уникальных событий по дате и названию
Запрос возвращает количество событий (event_count) с группировкой по дате и имени события для заданного списка событий (например, page_view, session_start, purchase).
SELECT
event_date,
event_name,
COUNT() AS event_count
FROM
-- Replace table name.
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_`
WHERE
event_name IN ('page_view', 'session_start', 'purchase')
-- Replace date range.
AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY
event_date,
event_name
ORDER BY
event_date,
event_count DESC; Расчет общего числа пользователей и новых пользователей
Поскольку не все клиенты отправляют user_id, рекомендуется использовать псевдоидентификатор user_pseudo_id.
Логика расчета:
- Всего пользователей (User Count): Количество уникальных
user_pseudo_id. - Новых пользователей (New User Count): Количество уникальных
user_pseudo_id, у которых за период фиксируется событиеfirst_visit(веб) илиfirst_open(приложение).
WITH user_data AS (
SELECT
user_pseudo_id,
MAX(IF(event_name IN ('first_visit', 'first_open'), 1, 0)) AS is_new_user
FROM
-- Replace table name.
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_`
-- Replace date range.
WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
GROUP BY user_pseudo_id
)
SELECT
COUNT() AS user_count,
SUM(is_new_user) AS new_user_count
FROM user_data; Среднее количество транзакций на покупателя
Показатель вычисляется как отношение общего числа событий покупки (purchase, in_app_purchase) к числу уникальных покупателей.
SELECT
COUNT() / COUNT(DISTINCT user_pseudo_id) AS avg_transaction_per_purchaser
FROM
-- Replace table name.
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_`
WHERE
event_name IN ('in_app_purchase', 'purchase')
-- Replace date range.
AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201231'; Работа с параметрами событий (Event Parameters)
В GA4 параметры событий хранятся в повторяющемся поле (RECORD/ARRAY) event_params. Для доступа к значениям необходимо использовать оператор UNNEST и функцию COALESCE для определения типа значения (int, float, double).
Детальная выборка: временные метки и значения параметров
Запрос возвращает строки для каждого события purchase с извлечением значения параметра value (стоимость транзакции).
SELECT
event_timestamp,
(
SELECT COALESCE(value.int_value, value.float_value, value.double_value)
FROM UNNEST(event_params)
WHERE key = 'value'
) AS event_value
FROM
-- Replace table name.
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
event_name = 'purchase'
-- Replace date range.
AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'; Агрегированная выборка: суммарная стоимость событий
Модификация предыдущего запроса для получения общей суммы (total_event_value) вместо детального списка.
SELECT
SUM(
(
SELECT COALESCE(value.int_value, value.float_value, value.double_value)
FROM UNNEST(event_params)
WHERE key = 'value'
)
) AS total_event_value
FROM
-- Replace table name.
`bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
event_name = 'purchase'
-- Replace date range.
AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'; Чек-лист при формировании запросов к ИЦ (Информационному Центру)
| Этап | Действие | Комментарий |
|---|---|---|
| Идентификация таблицы | Заменить `bigquery-public-data…` на `project_id.dataset_id.events_` | Использовать маскировку () для логов/документации |
| Диапазон дат | Установить `_TABLE_SUFFIX BETWEEN ‘YYYYMMDD’ AND ‘YYYYMMDD’` | Обязательно для контроля стоимости запроса (TB processed) |
| Выбор событий | Фильтр `event_name IN (…)` | Сокращает объем сканируемых данных |
| Распаковка параметров | `UNNEST(event_params)` + `COALESCE` | Учитывать вложенность и типы данных |
| Идентификация пользователя | Приоритет: `user_id` -> `user_pseudo_id` | Проверять заполняемость `user_id` в настройках GA4 |
Приведенные образцы запросов составляют фундамент для построения сложных аналитических отчетов в информационном центре на базе BigQuery. Ключевыми моментами остаются:
- Оптимизация затрат: Всегда ограничивайте диапазон дат через
_TABLE_SUFFIXи перечисляйте только необходимые колонки вSELECT(избегайтеSELECT *). - Повторное использование: Выносите логику извлечения параметров (подзапросы с
UNNEST) в CTE (Common Table Expressions) или UDF (User Defined Functions) для чистоты кода. - Безопасность данных: При передаче примеров запросов коллегам или в документацию обязательно маскируйте реальные Project ID, Dataset ID и номера счетов (*)
Данная статья основана на информации из официального репозитория разработчиков Google (developers.google.com) по состоянию на апрель 2024 года. Синтаксис и доступные поля могут обновляться; всегда сверяйтесь с актуальной схемой таблицы в интерфейсе BigQuery.