Перайсці да змесціва

Як зрабіць першы запыт да даных GA4 у BigQuery

Пасля звязкі Google Analytics 4 з BigQuery у вашым сховішчы кожны дзень з’яўляюцца сырыя падзеі: кожны прагляд старонкі, клік і заяўка з усімі параметрамі. Гэта дае свабоду, якой няма ў інтэрфейсе Analytics, але даныя ўладкаваны незвычайна, і першыя запыты часта ставяць у тупік.

Паказваю, як уладкаваны табліцы GA4 у BigQuery, разбіраю тры першыя SQL-запыты — па днях, старонках і крыніцах — і тлумачу, як не пераплаціць за апрацоўку даных.


Значок базы даных у акне браўзера, спіс крокаў і знак пытання — інструкцыя па першых запытах да даных GA4 у BigQuery

Што павінна быць гатова

Рэсурс GA4 звязаны з праектам Google Cloud праз раздзел BigQuery links у Admin, і экспарт працуе хаця б суткі. Улічыце: выгрузка пачынаецца з моманту звязкі, мінулыя даныя заднім чыслом не з’явяцца.

Як уладкаваны даныя

  • Набор даных называецца analytics_ плюс нумар рэсурсу, напрыклад analytics_123456789.
  • Штодзённая выгрузка — гэта табліцы events_ГГГГММДД, па адной на дзень. Калі ўключана струменевая выгрузка, бягучы дзень ляжыць у events_intraday_ГГГГММДД.
  • Адзін радок — адна падзея: page_view, first_visit, generate_lead і гэтак далей.
  • Параметры падзеі — адрас старонкі, загаловак і іншыя — ляжаць не ў асобных слупках, а ва ўкладзеным спісе event_params з пар «ключ — значэнне». Каб іх дастаць, патрэбны UNNEST.

Запыт 1. Падзеі і карыстальнікі па днях

SELECT
  event_date,
  COUNT(*) AS events,
  COUNT(DISTINCT user_pseudo_id) AS users
FROM `vash-praekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261007'
GROUP BY event_date
ORDER BY event_date;

events_* бярэ ўсе дзённыя табліцы адразу, а ўмова па _TABLE_SUFFIX пакідае толькі патрэбныя даты. Без гэтай умовы запыт прачытае ўсю гісторыю, і за гэта давядзецца заплаціць. Улічыце, што user_pseudo_id — гэта браўзер або прылада, а не чалавек.

Запыт 2. Старонкі, якія глядзяць найчасцей

SELECT
  (SELECT value.string_value FROM UNNEST(event_params)
   WHERE key = 'page_location') AS page,
  COUNT(*) AS views
FROM `vash-praekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261007'
  AND event_name = 'page_view'
GROUP BY page
ORDER BY views DESC
LIMIT 20;

Падзапыт з UNNEST дастае са спіса параметраў значэнне з ключом page_location. Гэтак жа дастаюцца і іншыя параметры: page_title, page_referrer. Лікавыя значэнні ляжаць у value.int_value, а не ў string_value.

Запыт 3. Адкуль прыйшлі новыя карыстальнікі

SELECT
  traffic_source.source AS source,
  traffic_source.medium AS medium,
  COUNT(DISTINCT user_pseudo_id) AS new_users
FROM `vash-praekt.analytics_123456789.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20261001' AND '20261007'
  AND event_name = 'first_visit'
GROUP BY source, medium
ORDER BY new_users DESC;

Поле traffic_source захоўвае крыніцу першага візіту карыстальніка, а не бягучага сеансу. Для новых карыстальнікаў яно падыходзіць, а для аналізу сеансаў выкарыстоўваюць іншыя палі, напрыклад collected_traffic_source.

Чаму лічбы не супадаюць з інтэрфейсам GA4

  • Інтэрфейс Analytics выкарыстоўвае мадэляванне і парогі даных, а ў BigQuery ляжаць толькі фактычна сабраныя падзеі.
  • Карыстальнікі ў BigQuery лічацца па прыладах і браўзерах, а справаздачы GA4 могуць аб’ядноўваць іх інакш.
  • event_date запісаны ў часавым поясе рэсурсу, а event_timestamp — у UTC.

Як не пераплаціць

  • Заўсёды абмяжоўвайце даты праз _TABLE_SUFFIX.
  • Выбірайце толькі патрэбныя слупкі. BigQuery бярэ плату за аб’ём прачытаных даных, а не за колькасць радкоў у выніку, таму LIMIT не эканоміць, а SELECT * — самы дарагі запыт.
  • Перад запускам глядзіце ацэнку ў рэдактары: BigQuery паказвае, колькі даных апрацуе запыт.
  • Бясплатны ўзровень BigQuery — 1 ТБ апрацоўкі запытаў у месяц і 10 ГБ захоўвання. Невялікаму сайту гэтага звычайна хапае.
  • У пясочніцы BigQuery без падключанай аплаты табліцы выдаляюцца праз 60 дзён. Для доўгага захоўвання патрэбны праект з плацежным акаўнтам.
  • У стандартных рэсурсаў GA4 штодзённая выгрузка абмежаваная мільёнам падзей у дзень; калі ліміт пастаянна перавышаецца, выгрузка прыпыняецца.

Коратка

  1. Адзін радок у табліцы — адна падзея, параметры — ва ўкладзеным event_params.
  2. Бярыце табліцы праз events_* і заўсёды фільтруйце _TABLE_SUFFIX.
  3. Параметры дастаюцца падзапытам з UNNEST.
  4. traffic_source — крыніца першага візіту, не сеансу.
  5. Плаціце за прачытаныя даныя: выбірайце толькі патрэбныя слупкі.

Калі выгрузку яшчэ трэба наладзіць або патрэбныя гатовыя справаздачы на сырых даных, мы можам наладзіць выгрузку Google Analytics 4 у BigQuery: створым праект, звяжам яго з GA4, праверым даныя і наладзім кантроль выдаткаў. Вынікі запытаў зручна выводзіць у справаздачу у Data Studio.