Як підключити GA4 до BigQuery
Покрокове підключення Google Analytics 4 до BigQuery: безкоштовний tier (10 GB + 1 TB), BigQuery Links, схема таблиць events_*, streaming vs daily export і перший SQL-запит.
Зміст
GA4 BigQuery Export — це вбудована функція Google Analytics 4, яка надсилає сирі дані про кожну подію у Google BigQuery. Замість зведених звітів GA4-інтерфейсу ви отримуєте доступ до кожного hit-а: який користувач, яка подія, які параметри, яка сесія. Підключення займає 10-15 хвилин і доступне безкоштовно в рамках безкоштовного tier BigQuery (10 GB зберігання + 1 TB запитів).
Ця стаття — покрокова інструкція: від створення GCP-проекту до першого SQL-запиту. Плюс пояснення схеми таблиць, різниця між daily і streaming export, і типові помилки.
Навіщо GA4 підключати до BigQuery
Стандартні звіти GA4 — це зведення. Ви бачите «1200 сесій», але не можете дізнатися, яка саме послідовність дій привела до покупки в конкретного сегменту. BigQuery Export розблоковує:
- Сирі дані без семплінгу. GA4 семплює у звітах при великих обсягах трафіку. BigQuery — ні: ви аналізуєте 100% подій.
- Нелінійні воронки. В GA4 воронки — лінійні і фіксовані. У SQL можна побудувати будь-яку послідовність і дозволити «пропуски» між кроками.
- З’єднання з іншими джерелами. JOIN GA4-подій з таблицею CRM-замовлень, рекламними витратами або складом товарів — у GA4-інтерфейсі це неможливо.
- Нескінченний горизонт даних. Стандартний GA4 зберігає дані 2 або 14 місяців залежно від налаштувань. BigQuery-копія зберігається стільки, скільки ви хочете.
- Власна атрибуція. Написати власну модель атрибуції на SQL — реально. У GA4 вибір обмежений вбудованими моделями.
Типовий кейс: інтернет-магазин хоче зрозуміти, які категорії переглядає користувач до першої покупки. У GA4-інтерфейсі — неможливо. У BigQuery — один JOIN і GROUP BY.
BigQuery безкоштовний tier: скільки реально
Google BigQuery має безкоштовний рівень (free tier), який діє в будь-якому проекті — зокрема й у тому, де підключено білінг:
| Ресурс | Безкоштовно на місяць |
|---|---|
| Зберігання активних даних | 10 GB |
| Зберігання довгострокових даних | 10 GB |
| Обробка запитів (queries) | 1 TB |
Що це означає на практиці:
- Сайт з 500k подій на місяць генерує приблизно 2-4 GB даних GA4. Вкладається в 10 GB безкоштовно.
- 1 TB обробки — це дуже багато для SQL-запитів по кількох місяцях. Якщо використовувати партиціонування (фільтр по даті), реальне споживання буде в 10-50x менше від максимуму.
- Streaming export (realtime) — НЕ входить у безкоштовний рівень. Коштує ~$0.05 за 200 MB вставлених даних.
Sandbox vs білінг. «BigQuery Sandbox» — це режим БЕЗ підключеного білінгу (з авто-видаленням таблиць приблизно через 60 днів). GA4-експорт вимагає увімкнути білінг (прив’язати карту) → щойно ви це зробили, проект вже НЕ sandbox, але ліміти 10 GB / 1 TB лишаються безкоштовними. Тобто платіжна карта потрібна, проте в межах безкоштовного tier ви нічого не платите.
Практичний висновок: для більшості проектів до 2-3 млн подій на місяць BigQuery можна використовувати безкоштовно. Платити починаєте, коли або перевищуєте storage/query quota, або вмикаєте streaming.
Підготовка: що потрібно перед підключенням
Перед тим як йти в GA4 → BigQuery Links, підготуйте:
- Google Cloud Platform (GCP) проект. Якщо немає — створіть на console.cloud.google.com. Один GCP-проект може обслуговувати кілька GA4-властивостей.
- Активований Billing. GA4 BigQuery Links не активуються без підключеного платіжного методу. Прив’язавши карту, ви виходите з режиму sandbox, але в межах безкоштовного tier (10 GB / 1 TB) реальних витрат не буде — карту треба підв’язати саме як умову експорту.
- Включений BigQuery API. GCP → APIs & Services → Enable APIs → BigQuery API. Зазвичай вмикається автоматично при першому використанні, але краще перевірити.
- Права у GA4. Потрібна роль Editor або Administrator на рівні GA4-властивості. Viewer не зможе створити BigQuery Link.
- Визначити регіон BigQuery (Location). США (US) або Євросоюз (EU) — вибирається один раз при створенні датасету і не змінюється. Якщо аудиторія переважно у ЄС і є GDPR-обмеження — вибирайте EU.
Покрокове підключення BigQuery Links
Крок 1. Відкрити BigQuery Links у GA4
- Зайдіть у Google Analytics 4 → Admin (шестерня внизу ліворуч).
- У стовпці Property знайдіть секцію Product Links.
- Натисніть BigQuery Links.
- Клікніть Link (кнопка вгорі праворуч).
Крок 2. Вибрати GCP-проект
- У діалозі натисніть Choose a BigQuery project.
- З’явиться список проектів, до яких у вашого Google-акаунта є доступ.
- Оберіть потрібний GCP-проект.
- Натисніть Confirm.
Якщо проект не з’являється — перевірте, що акаунт GA4 і GCP-проект прив’язані до одного Google-акаунта, або що у вас є IAM-роль BigQuery Admin або BigQuery Data Editor у цьому проекті.
Крок 3. Налаштувати параметри експорту
У цьому кроці два ключові параметри:
BigQuery dataset location (регіон)
Вибирайте між US і EU. Для українських і європейських сайтів з GDPR-вимогами — EU. Зміна регіону потребує видалення датасету і повторного підключення, тому вибирайте свідомо.
Export type (тип експорту)
| Тип | Частота | Вартість | Коли використовувати |
|---|---|---|---|
| Daily | 1 раз на день (наступного дня) | Безкоштовно (free tier) | Ретроспективний аналіз, воронки, когорти |
| Streaming | Майже реальний час (2-3 год затримка) | ~$0.05 / 200 MB | Операційні дашборди, алерти |
Рекомендую починати з Daily. Якщо потрібен realtime — доімкнути streaming можна пізніше.
Увімкнути/вимкнути конкретні типи подій
За замовчуванням GA4 надсилає всі події. Можна виключити окремі типи, якщо вони не потрібні — наприклад технічні події __t або debug-події. Для початку залишайте все включеним.
Крок 4. Підтвердити і зберегти
Перегляньте налаштування і натисніть Submit. GA4 автоматично:
- Створить датасет у вашому BigQuery-проекті (назва за замовчуванням —
analytics_<PROPERTY_ID>). - Надасть своєму сервісному акаунту права BigQuery Data Editor на цей датасет.
- Розпочне перший daily export наступного дня (дані за поточний день у UTC).
Перша таблиця з’явиться наступного дня після підключення — це нормально. Events за сьогодні потраплять до BigQuery завтра вранці.
Крок 5. Перевірити підключення
Через 24-48 годин після підключення:
- Відкрийте console.cloud.google.com/bigquery.
- У лівому дереві оберіть ваш проект → датасет
analytics_<PROPERTY_ID>. - Ви побачите таблиці виду
events_20260624(одна таблиця на один день).
Якщо таблиць немає через 48 годин — перейдіть до розділу «Типові помилки» нижче.
Схема таблиць events_*
Кожна таблиця events_YYYYMMDD містить один рядок на одну подію. Основні поля:
events_20260624
├── event_date STRING '20260624'
├── event_timestamp INTEGER мікросекунди UTC (1719187200000000)
├── event_name STRING 'page_view', 'purchase', 'click'
├── event_params RECORD (REPEATED) — масив пар key/value
│ ├── key STRING 'page_location', 'session_id', 'value'
│ └── value RECORD
│ ├── string_value STRING
│ ├── int_value INTEGER
│ ├── float_value FLOAT
│ └── double_value FLOAT
├── user_pseudo_id STRING анонімний ідентифікатор (~client_id)
├── user_id STRING якщо User-ID налаштований
├── user_properties RECORD (REPEATED) — аналогічно event_params
├── user_first_touch_timestamp INTEGER
├── device RECORD
│ ├── category STRING 'mobile', 'desktop', 'tablet'
│ ├── operating_system STRING
│ ├── browser STRING
│ └── language STRING
├── geo RECORD
│ ├── country STRING 'Ukraine'
│ ├── region STRING
│ └── city STRING
├── traffic_source RECORD
│ ├── source STRING 'google'
│ ├── medium STRING 'organic'
│ └── name STRING назва кампанії
└── ecommerce RECORD — заповнено для e-commerce подій
├── transaction_id STRING
├── total_item_quantity INTEGER
└── purchase_revenue FLOAT
Важлива деталь: event_params — це масив (REPEATED RECORD). Щоб отримати конкретний параметр, потрібен UNNEST.
Daily export vs Streaming export: що вибрати
Daily export
Дані за день UTC з’являються наступного ранку. Google запускає завантаження між 0:00 і 8:00 UTC.
- Таблиця за день:
events_20260624 - Також є
events_intraday_20260624— частковий знімок поточного дня (оновлюється кілька разів, після закінчення дня видаляється і замінюється фінальною таблицею). - Безкоштовно в рамках безкоштовного tier BigQuery (10 GB / 1 TB).
- Достатньо для 95% аналітичних задач.
Streaming export
Події потрапляють у BigQuery з затримкою ~2-3 години.
- Таблиця залишається та сама (
events_YYYYMMDD), рядки додаються безперервно. - Вартість: ~$0.05 за 200 MB (Google рахує як $0.05/GB, де 1 GB = 200 MB експортованих даних) — ставка фіксована, не залежить від регіону.
- Для сайту з 100k подій на день — приблизно $1-5 на місяць.
- Корисно якщо потрібен realtime-дашборд або алерти на аномалії трафіку.
Висновок: якщо конкретної задачі з realtime немає — використовуйте Daily. Streaming можна увімкнути пізніше.
Перший SQL-запит у BigQuery
Відкрийте BigQuery → ваш датасет → Query (або кнопка + → New query).
Кількість подій за типом за останній тиждень
SELECT
event_name,
COUNT(*) AS event_count
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN
FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 7 DAY))
AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
GROUP BY event_name
ORDER BY event_count DESC
LIMIT 20;
Замініть your-project.analytics_123456789 на ваш project ID і dateset ID (видно в дереві ліворуч).
_TABLE_SUFFIX — спеціальний псевдонім для суфіксу шардованих таблиць. Фільтр BETWEEN обмежує сканування тільки потрібними днями і економить TB quota.
Витягнути URL сторінок з page_view
SELECT
event_date,
(SELECT value.string_value
FROM UNNEST(event_params) WHERE key = 'page_location') AS page_url,
COUNT(*) AS pageviews
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
AND event_name = 'page_view'
GROUP BY event_date, page_url
ORDER BY pageviews DESC
LIMIT 50;
UNNEST(event_params) розгортає масив параметрів у рядки, WHERE key = 'page_location' вибирає потрібний ключ.
Воронка від перегляду товару до покупки
WITH funnel AS (
SELECT
user_pseudo_id,
MAX(IF(event_name = 'view_item', 1, 0)) AS viewed_item,
MAX(IF(event_name = 'add_to_cart', 1, 0)) AS added_to_cart,
MAX(IF(event_name = 'purchase', 1, 0)) AS purchased
FROM `your-project.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20260601' AND '20260623'
GROUP BY user_pseudo_id
)
SELECT
COUNT(*) AS total_users,
SUM(viewed_item) AS step1_view_item,
SUM(added_to_cart) AS step2_add_to_cart,
SUM(purchased) AS step3_purchase,
ROUND(SUM(added_to_cart) / SUM(viewed_item) * 100, 1) AS pct_view_to_cart,
ROUND(SUM(purchased) / SUM(added_to_cart) * 100, 1) AS pct_cart_to_purchase
FROM funnel
WHERE viewed_item = 1;
Цей запит показує воронку за довільний діапазон дат без семплінгу — саме те, чого не можна зробити в GA4-інтерфейсі.
Обмеження GA4 BigQuery Export
Не все ідеально. Важливі обмеження:
Немає даних за минулі дати. BigQuery Export починає збирати дані з дня підключення. Ретроспективні дані за минулі місяці не передаються (є виняток — Universal Analytics міг експортувати backfill, GA4 — ні).
Thresholding — тільки у звітах, не в експорті. Поширене непорозуміння: data thresholding GA4 застосовується до інтерфейсу звітів і досліджень (Explorations) та API, а НЕ до таблиць
events_*у BigQuery. Raw export віддає необроблені події — без трешолдингу, без семплінгу (саме тому це 100% подій, див. вище). Реальне обмеження приватності в експорті — це окремі речі на рівні даних користувача (видалення за запитом user-data deletion, передача consent-сигналів), а не приховування рядків за порогом «~1000 подій».Затримка daily export. Таблиця за вчора приходить сьогодні вранці — з затримкою 12-36 годин після UTC-опівночі. Не підходить для realtime-звітності без streaming.
Ліміти безкоштовного tier. 10 GB storage і 1 TB queries на місяць. При великих сайтах (10M+ подій/місяць) потрібен платний тариф.
Один BigQuery Location назавжди. EU або US — вибирається при створенні датасету і не змінюється. Перепідключення з новим датасетом означає втрату накопиченої history.
BigQuery Data Deletion не зворотна. Якщо помилково видалите таблицю без Time Travel backup (за замовчуванням 7 днів) — дані не відновити.
Типові помилки при підключенні
«Permission denied» при створенні Link. Потрібна роль Editor у GA4-властивості, не просто Viewer. Перевірте Admin → Property → Property Access Management.
Billing не активований — Link не створюється. GA4 BigQuery Export вимагає підв’язану платіжну карту (sandbox без білінгу для нього не підходить). GCP → Billing → Link a billing account.
BigQuery API вимкнений. GCP → APIs & Services → Enable APIs → BigQuery API. Симптом: помилка «Service has not been used in this project» при спробі підключення.
Неправильний Location. Вибрали US замість EU або навпаки — і дані не можна перемістити. Рішення: видалити датасет, перепідключити з правильним регіоном (дані за минулі дні при цьому губляться).
Даних немає першого дня. Перший daily export приходить наступного дня — це нормальна поведінка. Якщо немає через 48 годин — перевірте сервісний акаунт і IAM-права.
_TABLE_SUFFIXфільтр не застосований — великий рахунок. ЗапитFROM events_*безWHERE _TABLE_SUFFIXсканує всі таблиці (всю history). Завжди додавайте фільтр по датах.UNNEST без WHERE по ключу повертає всі параметри.
FROM UNNEST(event_params)безWHERE key = '...'дає рядок на кожен параметр — тобто множить кількість рядків у 10-20 разів. Завжди додавайтеWHERE key = 'назва_параметра'або використовуйте subquery.Streaming увімкнений випадково. Якщо не потрібен realtime — перевірте налаштування Link і вимкніть. Інакше починаєте платити за кожен MB трафіку.
Що далі після підключення
Після того як дані є в BigQuery:
- Підключіть Looker Studio (раніше Google Data Studio) до BigQuery-датасету — можна будувати візуальні дашборди без SQL.
- Налаштуйте scheduled queries — автоматичні SQL-запити за розкладом, результати зберігаються в окрему таблицю-агрегат. Наприклад щоденний rollup по каналах трафіку.
- Використовуйте GA4 BigQuery разом з іншими джерелами — JOIN з рекламними витратами (Google Ads через Data Transfer), CRM-даними або таблицями товарів.
Детальніше про налаштування самої GA4-властивості — GA4 Setup Checklist і повний посібник з GA4. Якщо GA4 ще не відправляє потрібні події — спочатку налаштуйте dataLayer і GTM.
Пов’язані матеріали
Схожі статті
Google Analytics 4 (GA4): повний посібник — event-модель, відмінності від UA, налаштування, звіти
Що таке Google Analytics 4, чим GA4 відрізняється від Universal Analytics, як працює event-based модель даних, ключові метрики (engagement rate, key events), 5 кроків налаштування, обмеження.
Google analyticsGoogle Analytics 4 (GA4): що це, як налаштувати з нуля та чим відрізняється від Universal Analytics
Повний посібник по GA4 для початківців: що таке Google Analytics 4, відмінності від Universal Analytics, як налаштувати ресурс з нуля, події, конверсії, інтеграція з Google Ads.
ChecklistsНалаштування Google Analytics 4: чек-лист (69 пунктів)
Покрокове налаштування GA4: 69 пунктів від KPI і Consent Mode v2 до server-side GTM і BigQuery. З прикладами коду і шляхами в інтерфейсі.