Pracujete s Google Analytics a občas potrebujete získať “raw” údaje z BigQuery — napríklad koľko krát sa spustil určitý event alebo odkiaľ prišli vaši návštevníci — no musíte zakaždým čakať, kým vám niekto z tímu vytiahne dáta z BigQuery, pretože neovládate SQL?
Tento článok je určený práve vám. Ukážeme si v ňom základy, ktoré vám umožnia samostatne získať dáta z BigQuery. Teda za predpokladu, že už BigQuery máte 😀
Ak nie, tento článok vám pomôže vytvoriť Google Cloud účet – nevyhnutný predpoklad k prepojeniu Google Analytics a BigQuery.
Google Cloud Platform (GCP) ponúka širokú škálu nástrojov a služieb, ktoré umožňujú firmám aj analytikom efektívne spravovať cloudové...
Jednou z výhod integrácie BigQuery s GA4 je prístup k surovým, nevzorkovaným dátam. GA4 export do BigQuery obsahuje širšiu škálu dát, vrátane tých, ktoré sú generované aj bez súhlasu používateľov, tzv. anonymizované cookieless pingy.
Ak BigQuery vôbec nepoznáte, jedna z vecí na čo je BiqQuery užitočné si môžete prečítať tu. 👇
Cookie Banner, Consent mode či GDPR – to sú strašiaky moderných webov. Každý z nás dôverne pozná rôzne...
Ako sa dostať do BigQuery
- Otvorte Google Cloud Console a prihláste sa do svojho Google účtu
- Vyberte projekt, v ktorom sa nachádzajú vaše dáta
- Do vyhľadávacieho poľa začnite písať BigQuery
- Z výsledkov vyberte BigQuery (Data warehouse/analytics)
V rozhraní BigQuery na ľavej strane kliknite na šípku vedľa názvu požadovaného datasetu. Zobrazia sa vám všetky dostupné tabuľky.
Kliknutím na názov tabuľky si zobrazíte jej schému — teda zoznam všetkých dostupných stĺpcov a typov dát.
Nad schémou nájdete tlačidlo „Query“ – kliknite naň a otvorí sa vám nové okno, kde môžete začať písať SQL dopyty.
Pre účely tohto článku budeme používať verejne dostupný dataset ga4_obfuscated_sample_ecommerce.Názov vášho vlastného GA4 datasetu bude začínať predponou analytics_.
GA4 export do BigQuery funguje ako tzv. „sharded table“ – teda tabuľka rozdelená po dňoch. To znamená, že miesto jednej veľkej tabuľky máte viacero tabuliek, ktoré majú názov vo formáte:
events_YYYYMMDD
(napr. events_20250101
pre 1. január 2025).Ak vidíte názov tabuľky vo formáte events_(10)
, znamená to, že ide o zjednodušené zobrazenie, ktoré zahŕňa 10 denných tabuliek.Základná štruktúra dopytu (query)
Aby ste mohli získať konkrétne dáta z BigQuery, potrebujete napísať SQL dopyt. Ten sa skladá z viacerých častí. Poďme si vysvetliť, čo každá z nich znamená – a rovno si to ukážeme na jednoduchom príklade:
SELECT
event_date,
device.category,
COUNT(*) AS devices_count
FROM
bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`
WHERE
event_name = ‚page_view‘
GROUP BY ALL
ORDER BY event_date
Vysvetlenie jednotlivých častí:
- SELECT – určuje, ktoré stĺpce chcete zobraziť vo výsledku. Ich kompletný zoznam nájdete v schéme tabuľky.
V tomto prípade si vyberáme:- event_date – dátum udalosti (eventu)
- device.category – typ zariadenia (napr. desktop, mobile)
- COUNT(*) – počet záznamov (riadkov), ktoré spĺňajú podmienku
Pridávame mu alias AS devices_count, vďaka čomu bude mať tento stĺpec vo výstupe čitateľný názov.
- FROM – určuje, z ktorej tabuľky sa majú dáta získať. Formát názvu je v BigQuery vždy: `project_id.dataset_id.table_id`
- WHERE – definuje podmienky, podľa ktorých sa záznamy filtrujú.
Tu je to: event_name = ‚page_view’. Znamená to, že nás zaujímajú len udalosti typu zobrazenie stránky. - GROUP BY ALL – zoskupí dáta podľa všetkých stĺpcov, ktoré nie sú agregované (neobsahujú COUNT, SUM, AVT, MIN, MAX a podobne).
- ORDER BY – určuje, ako majú byť výsledky zoradené. V tomto prípade podľa dátumu udalosti (event_date), aby sme videli vývoj v čase. Pridaním parametra ASC alebo DESC môžete výsledky zoradiť vzostupne alebo zostupne.
Skôr než spustíte akýkoľvek SQL dopyt v BigQuery, vždy sa pozrite, koľko dát jeho spustenie spotrebuje. Túto informáciu nájdete priamo pod editorom dopytu – ešte pred samotným spustením. Pomôže vám to predísť nechcenému čerpaniu veľkého objemu dát a teda aj zbytočným nákladom.
Google BigQuery totiž štandardne funguje na princípe platby za objem spracovaných dát (on-demand pricing). Každý mesiac však ponúka bezplatnú kvótu 10 TB spracovaných dotazov v rámci Google Cloud Free Tier.
Po prekročení tejto hranice sa účtuje poplatok podľa aktuálneho cenníka – v čase písania článku je to $6.25 za každý ďalší spracovaný terabajt dát.
Ak vám dopyt v BigQuery nefunguje tak, ako očakávate, alebo ho jednoducho neviete správne napísať, pokojne si nechajte pomôcť od AI nástrojov, ako je ChatGPT alebo Google Gemini.
Odporúčame hneď v úvode spomenúť, že pracujete s Google BigQuery a používate dáta z GA4 exportu – tieto dáta majú totiž svoje špecifiká, ako je napríklad štruktúra eventov či vnorené polia (nested fields), ktoré bežné SQL nástroje nemusia bez kontextu správne spracovať.
Keď dopyt úspešne spustíte a zobrazia sa vám výsledky, môžete si ich uložiť na ďalšie použitie. Stačí kliknúť na tlačidlo „Save results“ nad tabuľkou s výstupom.
Výsledok si môžete stiahnuť ako CSV súbor, uložiť priamo do Google Sheets alebo ho exportovať do novej tabuľky v BigQuery. Táto posledná možnosť je veľmi praktická, ak plánujete dáta ďalej vizualizovať napríklad v Looker Studio.
Špecifiká GA4 exportu v BigQuery
UNNEST
Pri práci s GA4 dátami v BigQuery narazíte na niekoľko odlišností oproti klasickým relačným databázam. Jednou z nich je spôsob, akým sú ukladané vlastné parametre udalostí, ktoré posielate napríklad cez Google Tag Manager.
Tieto parametre sa nachádzajú v stĺpci event_params, ktorý má štruktúru tzv. vnoreného poľa (repeated record). To znamená, že každý riadok môže obsahovať viacero parametrov naraz a aby ste sa k nim dostali, musíte použiť čarovnú funkciu UNNEST.
Napríklad, ak si chcete zistiť hodnotu parametra page_title, použijete takýto zápis:
(SELECT value.string_value FROM UNNEST(event_params) WHERE key = ‚page_title‘)
Pomocou tejto konštrukcie si viete z konkrétneho zoznamu parametrov vybrať iba ten, ktorý vás zaujíma. To isté platí aj pre user_properties, ktoré sa zapisujú rovnakým spôsobom. Dôležité je však vedieť, že hodnoty môžu byť uložené v rôznych formátoch – ako string_value, int_value alebo float_value. Preto si treba dať pozor, v ktorom poli daný údaj vyhľadávate – nesprávne zvolený typ vám môže vrátiť prázdnu hodnotu.
Napríklad:
- pre textové hodnoty použite value.string_value
- pre celé čísla použite value.int_value
- pre desatinné čísla použite value.float_value
Celý dopyt potom vyzerá takto:
_TABLE_SUFFIX
Ďalšou špecifickou vlastnosťou GA4 exportu je spôsob, akým sa v BigQuery ukladajú dáta po jednotlivých dňoch. Každý deň má totiž vlastnú samostatnú tabuľku s názvom vo formáte events_YYYYMMDD – napríklad events_20250501. Ak teda chcete analyzovať dáta za viac dní naraz, nestačí vám jedna konkrétna tabuľka. Namiesto toho musíte v názve tabuľky použiť hviezdičku (*) ako zástupný znak – čím poviete BigQuery, že chcete pracovať so všetkými tabuľkami s názvom events_….
Zároveň je potrebné vo vašej WHERE klauzule použiť systémovú premennú _TABLE_SUFFIX, ktorá označuje práve tú časť názvu tabuľky, ktorá sa mení – teda dátum.
Takýto dopyt potom môže vyzerať nasledovne:
FROM
`project.dataset.events_*`
WHERE
_TABLE_SUFFIX BETWEEN ‚20250501‘ AND ‚20250507‘
Keď všetky tieto poznatky spojíme dohromady – teda prácu s dennými tabuľkami pomocou * a _TABLE_SUFFIX, používanie UNNEST pre prístup k parametrom udalostí a výber len toho, čo naozaj potrebujeme – výsledný dopyt môže vyzerať napríklad takto:
Tento dopyt vám vráti počet zobrazení stránok (page_view), rozdelený podľa dátumu, typu zariadenia a názvu stránky (page_title).
Výslednú tabuľku si môžete uložiť a ďalej s ňou pracovať – napríklad ju použiť ako vstup pre vizualizáciu v Looker Studio alebo pokračovať v analýze priamo v BigQuery. Môžete ju tiež ďalej špecifikovať podľa potreby, napríklad pridaním filtra, ktorý zobrazí iba zobrazenia domovskej stránky.
Upozornenie
Pri písaní SQL dopytov si dávajte pozor na jedno časté nedorozumenie. Klauzula LIMIT, ktorá sa v iných databázach bežne používa na obmedzenie počtu riadkov vo výsledku, v BigQuery neobmedzuje množstvo dát, ktoré sa musia spracovať. To znamená, že aj keď si vo výstupe zobrazíte napríklad len 10 riadkov, BigQuery môže „pod kapotou“ prečítať celé gigabajty dát – a vy za ne zaplatíte.
Ak chcete dopyty optimalizovať a minimalizovať náklady, sústreďte sa predovšetkým na:
- výber len tých stĺpcov, ktoré naozaj potrebujete (nepoužívajte SELECT *)
- obmedzenie časového rozsahu, s ktorým pracujete
- úvodné testovanie na menšej vzorke dát
Odporúčame najprv vyskúšať dopyt na úzkom rozsahu dátumov a s minimálnym počtom stĺpcov. Keď máte istotu, že funguje správne a efektívne, môžete postupne rozšíriť dátumové rozpätie alebo pridať ďalšie dimenzie.
Záver
Základy SQL nie sú komplikované. Práve naopak – sú prekvapivo jednoduché a užitočné. Získate nimi priamy prístup k dátam bez toho, aby ste museli čakať na analytika. Okrem toho, znalosť SQL môže byť aj skvelým bodom do životopisu – a časom možno aj vstupenkou k zaujímavejšej pracovnej pozícii 🙂
Dôležité je nebáť sa začať. Ak vaše dopyty používajú len čítacie príkazy (napr. začínajú SELECT), nič nimi nemôžete pokaziť – najmä ak si zároveň dávate pozor na to, koľko dát spotrebujete.
Na druhej strane, ak s SQL ešte len začínate, vyhýbajte sa príkazom ako REPLACE, DELETE, TRUNCATE či UPDATE. Tieto príkazy menia alebo mažú dáta a ich nesprávne použitie môže mať nemilé následky – najmä v produkčných prostrediach.