{"id":20774,"date":"2025-05-27T11:58:13","date_gmt":"2025-05-27T09:58:13","guid":{"rendered":"https:\/\/www.dase-analytics.com\/blog\/?p=20774\/"},"modified":"2025-05-27T14:25:31","modified_gmt":"2025-05-27T12:25:31","slug":"bigquery-ga4-sql-minimum-pre-marketerov","status":"publish","type":"post","link":"https:\/\/www.dase-analytics.com\/blog\/sk\/bigquery-ga4-sql-minimum-pre-marketerov\/","title":{"rendered":"BigQuery + GA4: SQL minimum pre market\u00e9rov"},"content":{"rendered":"<p><span style=\"font-weight: 400;\"><strong>Pracujete s Google Analytics a ob\u010das potrebujete z\u00edska\u0165 \u201craw\u201d \u00fadaje z BigQuery<\/strong> \u2014 napr\u00edklad ko\u013eko kr\u00e1t sa spustil ur\u010dit\u00fd event alebo odkia\u013e pri\u0161li va\u0161i n\u00e1v\u0161tevn\u00edci \u2014 no mus\u00edte zaka\u017ed\u00fdm \u010daka\u0165, k\u00fdm v\u00e1m niekto z t\u00edmu vytiahne d\u00e1ta z BigQuery, preto\u017ee neovl\u00e1date SQL?\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tento \u010dl\u00e1nok je ur\u010den\u00fd pr\u00e1ve v\u00e1m. Uk\u00e1\u017eeme si v \u0148om z\u00e1klady, ktor\u00e9 v\u00e1m umo\u017enia samostatne z\u00edska\u0165 d\u00e1ta z BigQuery. <strong>Teda za predpokladu, \u017ee u\u017e BigQuery m\u00e1te<\/strong> &#x1f600;\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ak nie, tento \u010dl\u00e1nok <\/span><span style=\"font-weight: 400;\">v\u00e1m pom\u00f4\u017ee vytvori\u0165 Google Cloud \u00fa\u010det &#8211; nevyhnutn\u00fd predpoklad k prepojeniu Google Analytics a BigQuery.<\/span><\/p>\n\n\t<section class=\"post shortcode\">\n\t  <div class=\"row\">\n\t\t<a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/?post_type=post&p=20629\/\" class=\"col-lg-7 col-sm-6\">\n\t\t  <div class=\"post-img\" style=\"background-image:url(https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/ako-si-zalozit-google-cloud-ucet-1024x536.jpg)\"><\/div>\n\t\t<\/a>\n\t\t<div class=\"col-lg-5 col-sm-6\">\n\t\t  <header>\n\t\t\t<a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/?post_type=post&p=20629\/\">\n    \t\t  <span class=\"title\">Vytvorenie Google Cloud (GCP) \u00fa\u010dtu krok za krokom<\/span>\t\n\t\t\t<\/a>\n\t\t\t<div class=\"post-meta text-primary\">\n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/category\/zaklady-analytiky\/\">Z\u00e1klady analytiky<\/a>  | \n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/author\/juliusselnekovic\/\">J\u00falius Selnekovi\u010d<\/a> |\n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/2025\/02\">\n\t\t\t  \t<time datetime=\"2025-02-27\" itemprop=\"datePublished\">27. feb 2025<\/time>\n\t\t\t  <\/a>\n\t\t\t<\/div>\n\t\t  <\/header>\n\t\t  <article>\n\t\t  \t<p>Google Cloud Platform (GCP) pon\u00faka \u0161irok\u00fa \u0161k\u00e1lu n\u00e1strojov a slu\u017eieb, ktor\u00e9 umo\u017e\u0148uj\u00fa firm\u00e1m aj analytikom efekt\u00edvne spravova\u0165 cloudov\u00e9...<\/p>\n\t\t  <\/article>\n\t\t<\/div>\n\t  <\/div>\n\t<\/section>\n\t\n<p><span style=\"font-weight: 400;\">Jednou z v\u00fdhod integr\u00e1cie BigQuery s GA4 je pr\u00edstup k<strong> surov\u00fdm, nevzorkovan\u00fdm d\u00e1tam.<\/strong> GA4 export do BigQuery obsahuje \u0161ir\u0161iu \u0161k\u00e1lu d\u00e1t, vr\u00e1tane t\u00fdch, ktor\u00e9 s\u00fa generovan\u00e9 aj bez s\u00fahlasu pou\u017e\u00edvate\u013eov, tzv. anonymizovan\u00e9 cookieless pingy.<\/span><\/p>\n<p>Ak BigQuery v\u00f4bec nepozn\u00e1te, jedna z vec\u00ed na \u010do je BiqQuery u\u017eito\u010dn\u00e9 <strong>si m\u00f4\u017eete pre\u010d\u00edta\u0165 tu.<\/strong> &#x1f447;<\/p>\n\n\t<section class=\"post shortcode\">\n\t  <div class=\"row\">\n\t\t<a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/?post_type=post&p=19114\/\" class=\"col-lg-7 col-sm-6\">\n\t\t  <div class=\"post-img\" style=\"background-image:url(https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/COOKIELESS-BIGQUERY-1-1024x536.jpg)\"><\/div>\n\t\t<\/a>\n\t\t<div class=\"col-lg-5 col-sm-6\">\n\t\t  <header>\n\t\t\t<a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/?post_type=post&p=19114\/\">\n    \t\t  <span class=\"title\">BigQuery &#8211; \u017eiadne cookies, \u017eiadny probl\u00e9m&#8230; skoro<\/span>\t\n\t\t\t<\/a>\n\t\t\t<div class=\"post-meta text-primary\">\n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/category\/analytika-a-biznis\/\">Analytika a biznis<\/a>  | \n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/author\/sabinafackovcova\/\">Sab\u00edna Fa\u010dkovcov\u00e1<\/a> |\n\t\t\t  <a href=\"https:\/\/www.dase-analytics.com\/blog\/sk\/2023\/01\">\n\t\t\t  \t<time datetime=\"2023-01-18\" itemprop=\"datePublished\">18. jan 2023<\/time>\n\t\t\t  <\/a>\n\t\t\t<\/div>\n\t\t  <\/header>\n\t\t  <article>\n\t\t  \t<p>Cookie Banner, Consent mode \u010di GDPR &#8211; to s\u00fa stra\u0161iaky modern\u00fdch webov. Ka\u017ed\u00fd z n\u00e1s d\u00f4verne pozn\u00e1 r\u00f4zne...<\/p>\n\t\t  <\/article>\n\t\t<\/div>\n\t  <\/div>\n\t<\/section>\n\t\n<h2><b>Ako sa dosta\u0165 do BigQuery<\/b><\/h2>\n<ol>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Otvorte<\/span><a href=\"https:\/\/console.cloud.google.com\/\" target=\"_blank\" rel=\"noopener\"> <span style=\"font-weight: 400;\">Google Cloud Console<\/span><\/a><span style=\"font-weight: 400;\"> a prihl\u00e1ste sa do svojho Google \u00fa\u010dtu<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Vyberte projekt, v ktorom sa nach\u00e1dzaj\u00fa va\u0161e d\u00e1ta<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Do vyh\u013ead\u00e1vacieho po\u013ea za\u010dnite p\u00edsa\u0165 <\/span><b>BigQuery<\/b><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">Z v\u00fdsledkov vyberte <\/span><b>BigQuery (Data warehouse\/analytics)<\/b><\/li>\n<\/ol>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59.png\" data-rel=\"lightbox-image-0\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20790 size-large\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59-1024x573.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"1024\" height=\"573\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59-1024x573.png 1024w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59-300x168.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59-1536x859.png 1536w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59-600x336.png 600w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/1-59.png 1600w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">V rozhran\u00ed BigQuery na \u013eavej strane kliknite na \u0161\u00edpku ved\u013ea n\u00e1zvu po\u017eadovan\u00e9ho datasetu. Zobrazia sa v\u00e1m v\u0161etky dostupn\u00e9 tabu\u013eky.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Kliknut\u00edm na n\u00e1zov tabu\u013eky si zobraz\u00edte jej sch\u00e9mu \u2014 teda zoznam v\u0161etk\u00fdch dostupn\u00fdch st\u013apcov a typov d\u00e1t.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Nad sch\u00e9mou n\u00e1jdete tla\u010didlo <\/span><b>&#8222;Query&#8220;<\/b><span style=\"font-weight: 400;\"> \u2013 kliknite na\u0148 a otvor\u00ed sa v\u00e1m nov\u00e9 okno, kde m\u00f4\u017eete za\u010da\u0165 p\u00edsa\u0165 SQL dopyty.<\/span><\/p>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57.png\" data-rel=\"lightbox-image-1\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20794 size-full\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"1559\" height=\"1070\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57.png 1559w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57-300x206.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57-1024x703.png 1024w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57-1536x1054.png 1536w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/2-57-600x412.png 600w\" sizes=\"(max-width: 1559px) 100vw, 1559px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Pre \u00fa\u010dely tohto \u010dl\u00e1nku budeme pou\u017e\u00edva\u0165 verejne dostupn\u00fd dataset <\/span><b>ga4_obfuscated_sample_ecommerce<\/b><b>.<\/b><span style=\"font-weight: 400;\">N\u00e1zov v\u00e1\u0161ho vlastn\u00e9ho GA4 datasetu bude za\u010d\u00edna\u0165 predponou <\/span><b>analytics_<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<div style=\"background-color: #f2f2f2; border-left: 4px solid #ccc; padding: 1em; border-radius: 8px; margin: 1.5em 0;\"><strong>Pozn\u00e1mka:<\/strong><br \/>\nGA4 export do BigQuery funguje ako tzv. &#8222;sharded table&#8220; \u2013 teda tabu\u013eka rozdelen\u00e1 po d\u0148och. To znamen\u00e1, \u017ee miesto jednej ve\u013ekej tabu\u013eky m\u00e1te viacero tabuliek, ktor\u00e9 maj\u00fa n\u00e1zov vo form\u00e1te:<code>events_YYYYMMDD<\/code> (napr. <code>events_20250101<\/code> pre 1. janu\u00e1r 2025).Ak vid\u00edte n\u00e1zov tabu\u013eky vo form\u00e1te <code>events_(10)<\/code>, znamen\u00e1 to, \u017ee ide o zjednodu\u0161en\u00e9 zobrazenie, ktor\u00e9 zah\u0155\u0148a 10 denn\u00fdch tabuliek.<\/div>\n<h2><b>Z\u00e1kladn\u00e1 \u0161trukt\u00fara dopytu (query)<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Aby ste mohli z\u00edska\u0165 konkr\u00e9tne d\u00e1ta z BigQuery, potrebujete nap\u00edsa\u0165 <\/span><b>SQL dopyt<\/b><span style=\"font-weight: 400;\">. Ten sa sklad\u00e1 z viacer\u00fdch \u010dast\u00ed. Po\u010fme si vysvetli\u0165, \u010do ka\u017ed\u00e1 z nich znamen\u00e1 \u2013 a rovno si to uk\u00e1\u017eeme na jednoduchom pr\u00edklade:<\/span><\/p>\n<p><strong>SELECT<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">event_date<\/span><span style=\"font-weight: 400;\">,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">device.category<\/span><span style=\"font-weight: 400;\">,<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">COUNT<\/span><span style=\"font-weight: 400;\">(*)<\/span> <span style=\"font-weight: 400;\">AS<\/span> <span style=\"font-weight: 400;\">devices_count<\/span><\/p>\n<p><strong>FROM<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_20210131`<\/span><\/p>\n<p><strong>WHERE<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">event_name<\/span><span style=\"font-weight: 400;\"> = <\/span><span style=\"font-weight: 400;\">&#8218;page_view&#8216;<\/span><\/p>\n<p><strong>GROUP BY ALL<\/strong><\/p>\n<p><span style=\"font-weight: 400;\">ORDER<\/span> <span style=\"font-weight: 400;\">BY<\/span> <span style=\"font-weight: 400;\">event_date<\/span><\/p>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46.png\" data-rel=\"lightbox-image-2\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20796 size-full\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"1281\" height=\"316\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46.png 1281w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46-300x74.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46-1024x253.png 1024w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/3-46-600x148.png 600w\" sizes=\"(max-width: 1281px) 100vw, 1281px\" \/><\/a><\/p>\n<h3><b>Vysvetlenie jednotliv\u00fdch \u010dast\u00ed:<\/b><\/h3>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>SELECT<\/b><span style=\"font-weight: 400;\"> \u2013 ur\u010duje, <\/span><b>ktor\u00e9 st\u013apce chcete zobrazi\u0165<\/b><span style=\"font-weight: 400;\"> vo v\u00fdsledku. Ich kompletn\u00fd zoznam n\u00e1jdete v sch\u00e9me tabu\u013eky. <\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> V tomto pr\u00edpade si vyber\u00e1me:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">event_date<\/span><span style=\"font-weight: 400;\"> \u2013 d\u00e1tum udalosti (eventu)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">device.category<\/span><span style=\"font-weight: 400;\"> \u2013 typ zariadenia (napr. desktop, mobile)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"2\"><span style=\"font-weight: 400;\">COUNT(*)<\/span><span style=\"font-weight: 400;\"> \u2013 po\u010det z\u00e1znamov (riadkov), ktor\u00e9 sp\u013a\u0148aj\u00fa podmienku<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> Prid\u00e1vame mu alias <\/span><span style=\"font-weight: 400;\">AS devices_count<\/span><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">, v\u010faka \u010domu bude ma\u0165 tento st\u013apec vo v\u00fdstupe \u010ditate\u013en\u00fd n\u00e1zov.<\/span><\/span><\/li>\n<\/ul>\n<\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>FROM<\/b><span style=\"font-weight: 400;\"> \u2013 ur\u010duje, <\/span><b>z ktorej tabu\u013eky sa maj\u00fa d\u00e1ta z\u00edska\u0165<\/b><span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">. Form\u00e1t n\u00e1zvu je v BigQuery v\u017edy: `project_id.dataset_id.table_id`<\/span><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>WHERE<\/b><span style=\"font-weight: 400;\"> \u2013 definuje <\/span><b>podmienky<\/b><span style=\"font-weight: 400;\">, pod\u013ea ktor\u00fdch sa z\u00e1znamy filtruj\u00fa.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><span style=\"font-weight: 400;\"> Tu je to: <\/span><span style=\"font-weight: 400;\">event_name<\/span> <span style=\"font-weight: 400;\">=<\/span><span style=\"font-weight: 400;\"> &#8218;page_view\u2019<\/span><span style=\"font-weight: 400;\">.<\/span> <span style=\"font-weight: 400;\"><span style=\"font-weight: 400;\">Znamen\u00e1 to, \u017ee n\u00e1s zauj\u00edmaj\u00fa len udalosti typu zobrazenie str\u00e1nky.<\/span><\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>GROUP BY ALL<\/b><span style=\"font-weight: 400;\"> \u2013 zoskup\u00ed d\u00e1ta<\/span><b> pod\u013ea v\u0161etk\u00fdch st\u013apcov<\/b><span style=\"font-weight: 400;\">, ktor\u00e9 nie s\u00fa agregovan\u00e9 (neobsahuj\u00fa COUNT, SUM, AVT, MIN, MAX a podobne).<br \/>\n<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>ORDER BY<\/b><span style=\"font-weight: 400;\"> \u2013 ur\u010duje, <\/span><b>ako maj\u00fa by\u0165 v\u00fdsledky zoraden\u00e9<\/b><span style=\"font-weight: 400;\">. V tomto pr\u00edpade pod\u013ea d\u00e1tumu udalosti (<\/span><span style=\"font-weight: 400;\">event_date<\/span><span style=\"font-weight: 400;\">), aby sme videli v\u00fdvoj v \u010dase. Pridan\u00edm parametra <\/span><span style=\"font-weight: 400;\">ASC<\/span><span style=\"font-weight: 400;\"> alebo <\/span><span style=\"font-weight: 400;\">DESC<\/span><span style=\"font-weight: 400;\"> m\u00f4\u017eete v\u00fdsledky zoradi\u0165 vzostupne alebo zostupne.\u00a0<\/span><\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><span style=\"font-weight: 400;\">Sk\u00f4r ne\u017e spust\u00edte ak\u00fdko\u013evek SQL dopyt v BigQuery, <\/span><b>v\u017edy sa pozrite, ko\u013eko d\u00e1t jeho spustenie spotrebuje<\/b><span style=\"font-weight: 400;\">. T\u00fato inform\u00e1ciu n\u00e1jdete priamo pod editorom dopytu \u2013 e\u0161te pred samotn\u00fdm spusten\u00edm. Pom\u00f4\u017ee v\u00e1m to pred\u00eds\u0165 nechcen\u00e9mu \u010derpaniu ve\u013ek\u00e9ho objemu d\u00e1t a teda aj zbyto\u010dn\u00fdm n\u00e1kladom.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Google BigQuery toti\u017e \u0161tandardne funguje na princ\u00edpe <\/span><b>platby za objem spracovan\u00fdch d\u00e1t<\/b><span style=\"font-weight: 400;\"> (on-demand pricing). Ka\u017ed\u00fd mesiac v\u0161ak pon\u00faka <\/span><b>bezplatn\u00fa kv\u00f3tu 10 TB spracovan\u00fdch dotazov <\/b><span style=\"font-weight: 400;\">v r\u00e1mci Google Cloud Free Tier.<\/span><span style=\"font-weight: 400;\"><br \/>\n<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Po prekro\u010den\u00ed tejto hranice sa \u00fa\u010dtuje poplatok pod\u013ea aktu\u00e1lneho cenn\u00edka &#8211; v \u010dase p\u00edsania \u010dl\u00e1nku je to <\/span><b>$6.25 <\/b><b>za ka\u017ed\u00fd \u010fal\u0161\u00ed spracovan\u00fd terabajt d\u00e1t<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44.png\" data-rel=\"lightbox-image-3\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20797 size-full\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"1270\" height=\"538\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44.png 1270w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44-300x127.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44-1024x434.png 1024w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/4-44-600x254.png 600w\" sizes=\"(max-width: 1270px) 100vw, 1270px\" \/><\/a><\/p>\n<p><span style=\"font-weight: 400;\">Ak v\u00e1m dopyt v BigQuery nefunguje tak, ako o\u010dak\u00e1vate, alebo ho jednoducho neviete spr\u00e1vne nap\u00edsa\u0165, pokojne si nechajte pom\u00f4c\u0165 od AI n\u00e1strojov, ako je ChatGPT alebo Google Gemini.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\"><strong>Odpor\u00fa\u010dame hne\u010f v \u00favode spomen\u00fa\u0165, \u017ee pracujete s Google BigQuery a pou\u017e\u00edvate d\u00e1ta z GA4 exportu<\/strong> \u2013 tieto d\u00e1ta maj\u00fa toti\u017e svoje \u0161pecifik\u00e1, ako je napr\u00edklad \u0161trukt\u00fara eventov \u010di vnoren\u00e9 polia (nested fields), ktor\u00e9 be\u017en\u00e9 SQL n\u00e1stroje nemusia bez kontextu spr\u00e1vne spracova\u0165.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ke\u010f dopyt \u00faspe\u0161ne spust\u00edte a zobrazia sa v\u00e1m v\u00fdsledky, m\u00f4\u017eete si ich ulo\u017ei\u0165 na \u010fal\u0161ie pou\u017eitie. Sta\u010d\u00ed klikn\u00fa\u0165 na tla\u010didlo <strong>\u201eSave results\u201c<\/strong> nad tabu\u013ekou s v\u00fdstupom.\u00a0<\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00fdsledok si m\u00f4\u017eete stiahnu\u0165 ako <strong>CSV<\/strong> s\u00fabor, ulo\u017ei\u0165 priamo <strong>do Google Sheets<\/strong> alebo ho exportova\u0165 do novej tabu\u013eky <strong>v BigQuery<\/strong>. T\u00e1to posledn\u00e1 mo\u017enos\u0165 <strong>je ve\u013emi praktick\u00e1<\/strong>, ak pl\u00e1nujete d\u00e1ta \u010falej vizualizova\u0165 napr\u00edklad <strong>v Looker Studio.<\/strong><\/span><\/p>\n<h2><b>\u0160pecifik\u00e1 GA4 exportu v BigQuery<\/b><\/h2>\n<h3><strong>UNNEST<\/strong><\/h3>\n<p><span style=\"font-weight: 400;\">Pri pr\u00e1ci s GA4 d\u00e1tami v BigQuery naraz\u00edte na nieko\u013eko odli\u0161nost\u00ed oproti klasick\u00fdm rela\u010dn\u00fdm datab\u00e1zam. Jednou z nich je sp\u00f4sob, ak\u00fdm s\u00fa ukladan\u00e9 vlastn\u00e9 parametre udalost\u00ed, ktor\u00e9 posielate napr\u00edklad cez Google Tag Manager.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tieto parametre sa nach\u00e1dzaj\u00fa v st\u013apci <\/span><span style=\"font-weight: 400;\">event_params<\/span><span style=\"font-weight: 400;\">, ktor\u00fd m\u00e1 \u0161trukt\u00faru tzv. vnoren\u00e9ho po\u013ea (<\/span><i><span style=\"font-weight: 400;\">repeated record<\/span><\/i><span style=\"font-weight: 400;\">). To znamen\u00e1, \u017ee ka\u017ed\u00fd riadok m\u00f4\u017ee obsahova\u0165 viacero parametrov naraz a aby ste sa k nim dostali, mus\u00edte pou\u017ei\u0165 \u010darovn\u00fa funkciu<\/span><b> UNNEST<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Napr\u00edklad, ak si chcete zisti\u0165 hodnotu parametra <\/span><span style=\"font-weight: 400;\">page_title<\/span><span style=\"font-weight: 400;\">, pou\u017eijete tak\u00fdto z\u00e1pis:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">SELECT<\/span> <span style=\"font-weight: 400;\">value.string_value<\/span> <span style=\"font-weight: 400;\">FROM<\/span> <span style=\"font-weight: 400;\">UNNEST<\/span><span style=\"font-weight: 400;\">(<\/span><span style=\"font-weight: 400;\">event_params<\/span><span style=\"font-weight: 400;\">)<\/span> <span style=\"font-weight: 400;\">WHERE<\/span> <span style=\"font-weight: 400;\">key<\/span><span style=\"font-weight: 400;\"> = <\/span><span style=\"font-weight: 400;\">&#8218;page_title&#8216;<\/span><span style=\"font-weight: 400;\">)<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Pomocou tejto kon\u0161trukcie si viete z konkr\u00e9tneho zoznamu parametrov vybra\u0165 iba ten, ktor\u00fd v\u00e1s zauj\u00edma. To ist\u00e9 plat\u00ed aj pre <\/span><span style=\"font-weight: 400;\">user_properties<\/span><span style=\"font-weight: 400;\">, ktor\u00e9 sa zapisuj\u00fa rovnak\u00fdm sp\u00f4sobom. D\u00f4le\u017eit\u00e9 je v\u0161ak vedie\u0165, \u017ee <\/span><b>hodnoty m\u00f4\u017eu by\u0165 ulo\u017een\u00e9 v r\u00f4znych form\u00e1toch<\/b><span style=\"font-weight: 400;\"> \u2013 ako <\/span><span style=\"font-weight: 400;\">string_value<\/span><span style=\"font-weight: 400;\">, <\/span><span style=\"font-weight: 400;\">int_value <\/span><span style=\"font-weight: 400;\">alebo <\/span><span style=\"font-weight: 400;\">float_value<\/span><span style=\"font-weight: 400;\">. Preto si treba da\u0165 pozor, <\/span><b>v ktorom poli dan\u00fd \u00fadaj vyh\u013ead\u00e1vate<\/b><span style=\"font-weight: 400;\"> \u2013 nespr\u00e1vne zvolen\u00fd typ v\u00e1m m\u00f4\u017ee vr\u00e1ti\u0165 pr\u00e1zdnu hodnotu.<\/span><\/p>\n<p><strong>Napr\u00edklad:<\/strong><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">pre textov\u00e9 hodnoty pou\u017eite <\/span><span style=\"font-weight: 400;\">value.string_value<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">pre cel\u00e9 \u010d\u00edsla pou\u017eite <\/span><span style=\"font-weight: 400;\">value.int_value<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><span style=\"font-weight: 400;\">pre desatinn\u00e9 \u010d\u00edsla pou\u017eite <\/span><span style=\"font-weight: 400;\">value.float_value<\/span><\/li>\n<\/ul>\n<h3><strong>Cel\u00fd dopyt potom vyzer\u00e1 takto:<\/strong><\/h3>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/6-29.png\" data-rel=\"lightbox-image-4\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20800 size-full\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/6-29.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"953\" height=\"593\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/6-29.png 953w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/6-29-300x187.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/6-29-600x373.png 600w\" sizes=\"(max-width: 953px) 100vw, 953px\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h3><span style=\"font-weight: 400;\">_TABLE_SUFFIX<\/span><\/h3>\n<p><span style=\"font-weight: 400;\">\u010eal\u0161ou \u0161pecifickou vlastnos\u0165ou GA4 exportu je sp\u00f4sob, ak\u00fdm sa v BigQuery ukladaj\u00fa d\u00e1ta po jednotliv\u00fdch d\u0148och. Ka\u017ed\u00fd de\u0148 m\u00e1 toti\u017e vlastn\u00fa samostatn\u00fa tabu\u013eku s n\u00e1zvom vo form\u00e1te <\/span><span style=\"font-weight: 400;\">events_YYYYMMDD<\/span><span style=\"font-weight: 400;\"> \u2013 napr\u00edklad <\/span><span style=\"font-weight: 400;\">events_20250501<\/span><span style=\"font-weight: 400;\">. Ak teda chcete analyzova\u0165 d\u00e1ta za viac dn\u00ed naraz, nesta\u010d\u00ed v\u00e1m jedna konkr\u00e9tna tabu\u013eka. Namiesto toho mus\u00edte v n\u00e1zve tabu\u013eky pou\u017ei\u0165 <\/span><b>hviezdi\u010dku (<\/b><b>*<\/b><b>) ako z\u00e1stupn\u00fd znak<\/b><span style=\"font-weight: 400;\"> \u2013 \u010d\u00edm poviete BigQuery, \u017ee chcete pracova\u0165 so v\u0161etk\u00fdmi tabu\u013ekami s n\u00e1zvom <\/span><span style=\"font-weight: 400;\">events_\u2026<\/span><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Z\u00e1rove\u0148 je potrebn\u00e9 vo va\u0161ej <\/span><span style=\"font-weight: 400;\">WHERE<\/span><span style=\"font-weight: 400;\"> klauzule pou\u017ei\u0165 syst\u00e9mov\u00fa premenn\u00fa <\/span><b>_TABLE_SUFFIX<\/b><span style=\"font-weight: 400;\">, ktor\u00e1 ozna\u010duje pr\u00e1ve t\u00fa \u010das\u0165 n\u00e1zvu tabu\u013eky, ktor\u00e1 sa men\u00ed \u2013 teda d\u00e1tum.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Tak\u00fdto dopyt potom m\u00f4\u017ee vyzera\u0165 nasledovne:<\/span><\/p>\n<p><span style=\"font-weight: 400;\">FROM<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">`project.dataset.events_*`<\/span><\/p>\n<p><span style=\"font-weight: 400;\">WHERE<\/span><\/p>\n<p><span style=\"font-weight: 400;\">\u00a0<\/span><span style=\"font-weight: 400;\">_TABLE_SUFFIX<\/span> <span style=\"font-weight: 400;\">BETWEEN<\/span> <span style=\"font-weight: 400;\">&#8218;20250501&#8216;<\/span> <span style=\"font-weight: 400;\">AND<\/span> <span style=\"font-weight: 400;\">&#8218;20250507&#8216;<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ke\u010f v\u0161etky tieto poznatky spoj\u00edme dohromady \u2013 teda pr\u00e1cu s denn\u00fdmi tabu\u013ekami pomocou <\/span><span style=\"font-weight: 400;\">*<\/span><span style=\"font-weight: 400;\"> a <\/span><span style=\"font-weight: 400;\">_TABLE_SUFFIX<\/span><span style=\"font-weight: 400;\">, pou\u017e\u00edvanie <\/span><span style=\"font-weight: 400;\">UNNEST<\/span><span style=\"font-weight: 400;\"> pre pr\u00edstup k parametrom udalost\u00ed a v\u00fdber len toho, \u010do naozaj potrebujeme \u2013 v\u00fdsledn\u00fd dopyt m\u00f4\u017ee vyzera\u0165 napr\u00edklad takto:<\/span><\/p>\n<p><a href=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36.png\" data-rel=\"lightbox-image-5\" data-rl_title=\"\" data-rl_caption=\"\" title=\"\"><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-20798 size-full\" src=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36.png\" alt=\"BigQuery + GA4: SQL minimum pre market\u00e9rov\" width=\"1184\" height=\"752\" srcset=\"https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36.png 1184w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36-300x191.png 300w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36-1024x650.png 1024w, https:\/\/www.dase-analytics.com\/blog\/wp-content\/uploads\/5-36-600x381.png 600w\" sizes=\"(max-width: 1184px) 100vw, 1184px\" \/><\/a><\/p>\n<p><strong>Tento dopyt v\u00e1m vr\u00e1ti po\u010det zobrazen\u00ed str\u00e1nok (page_view), rozdelen\u00fd pod\u013ea d\u00e1tumu, typu zariadenia a n\u00e1zvu str\u00e1nky (page_title<\/strong><span style=\"font-weight: 400;\"><strong>).<\/strong> <\/span><\/p>\n<p><span style=\"font-weight: 400;\">V\u00fdsledn\u00fa tabu\u013eku si m\u00f4\u017eete ulo\u017ei\u0165 a \u010falej s \u0148ou pracova\u0165 \u2013 napr\u00edklad ju pou\u017ei\u0165 ako vstup pre vizualiz\u00e1ciu v Looker Studio alebo pokra\u010dova\u0165 v anal\u00fdze priamo v BigQuery. M\u00f4\u017eete ju tie\u017e \u010falej \u0161pecifikova\u0165 pod\u013ea potreby, napr\u00edklad pridan\u00edm filtra, ktor\u00fd zobraz\u00ed iba zobrazenia domovskej str\u00e1nky.<\/span><\/p>\n<h2><b>Upozornenie<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Pri p\u00edsan\u00ed SQL dopytov si d\u00e1vajte pozor na jedno \u010dast\u00e9 nedorozumenie. Klauzula <\/span><span style=\"font-weight: 400;\">LIMIT<\/span><span style=\"font-weight: 400;\">, ktor\u00e1 sa v in\u00fdch datab\u00e1zach be\u017ene pou\u017e\u00edva na obmedzenie po\u010dtu riadkov vo v\u00fdsledku, <\/span><b>v BigQuery neobmedzuje mno\u017estvo d\u00e1t, ktor\u00e9 sa musia spracova\u0165<\/b><span style=\"font-weight: 400;\">. To znamen\u00e1, \u017ee aj ke\u010f si vo v\u00fdstupe zobraz\u00edte napr\u00edklad len 10 riadkov, BigQuery m\u00f4\u017ee \u201epod kapotou\u201c pre\u010d\u00edta\u0165 cel\u00e9 gigabajty d\u00e1t \u2013 a vy za ne zaplat\u00edte.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Ak chcete dopyty optimalizova\u0165 a minimalizova\u0165 n\u00e1klady, s\u00fastre\u010fte sa predov\u0161etk\u00fdm na:<\/span><\/p>\n<ul>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>v\u00fdber len t\u00fdch st\u013apcov<\/b><span style=\"font-weight: 400;\">, ktor\u00e9 naozaj potrebujete (nepou\u017e\u00edvajte <\/span><span style=\"font-weight: 400;\">SELECT *<\/span><span style=\"font-weight: 400;\">)<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>obmedzenie \u010dasov\u00e9ho rozsahu<\/b><span style=\"font-weight: 400;\">, s ktor\u00fdm pracujete<\/span><\/li>\n<li style=\"font-weight: 400;\" aria-level=\"1\"><b>\u00favodn\u00e9 testovanie na men\u0161ej vzorke d\u00e1t<\/b><\/li>\n<\/ul>\n<p><span style=\"font-weight: 400;\"><strong>Odpor\u00fa\u010dame<\/strong> najprv vysk\u00fa\u0161a\u0165 dopyt na \u00fazkom rozsahu d\u00e1tumov a s minim\u00e1lnym po\u010dtom st\u013apcov. Ke\u010f m\u00e1te istotu, \u017ee funguje spr\u00e1vne a efekt\u00edvne, m\u00f4\u017eete postupne roz\u0161\u00edri\u0165 d\u00e1tumov\u00e9 rozp\u00e4tie alebo prida\u0165 \u010fal\u0161ie dimenzie.<\/span><\/p>\n<h2><b>Z\u00e1ver<\/b><\/h2>\n<p><span style=\"font-weight: 400;\">Z\u00e1klady SQL nie s\u00fa komplikovan\u00e9. <strong>Pr\u00e1ve naopak \u2013 s\u00fa prekvapivo jednoduch\u00e9 a u\u017eito\u010dn\u00e9.<\/strong> Z\u00edskate nimi priamy pr\u00edstup k d\u00e1tam bez toho, aby ste museli \u010daka\u0165 na analytika. Okrem toho, znalos\u0165 SQL m\u00f4\u017ee by\u0165 aj skvel\u00fdm bodom do \u017eivotopisu \u2013 a \u010dasom mo\u017eno aj vstupenkou k zauj\u00edmavej\u0161ej pracovnej poz\u00edcii \ud83d\ude42<\/span><\/p>\n<p><span style=\"font-weight: 400;\">D\u00f4le\u017eit\u00e9 je neb\u00e1\u0165 sa za\u010da\u0165. Ak va\u0161e dopyty pou\u017e\u00edvaj\u00fa len \u010d\u00edtacie pr\u00edkazy (napr. za\u010d\u00ednaj\u00fa <\/span><span style=\"font-weight: 400;\">SELECT<\/span><span style=\"font-weight: 400;\">), <\/span><b>ni\u010d nimi nem\u00f4\u017eete pokazi\u0165<\/b><span style=\"font-weight: 400;\"> \u2013 najm\u00e4 ak si z\u00e1rove\u0148 d\u00e1vate pozor na to, <\/span><b>ko\u013eko d\u00e1t spotrebujete<\/b><span style=\"font-weight: 400;\">.<\/span><\/p>\n<p><span style=\"font-weight: 400;\">Na druhej strane, ak s SQL e\u0161te len za\u010d\u00ednate, <\/span><b>vyh\u00fdbajte sa pr\u00edkazom ako <\/b><b>REPLACE<\/b><b>, <\/b><b>DELETE<\/b><b>, <\/b><b>TRUNCATE<\/b><b> \u010di <\/b><b>UPDATE<\/b><span style=\"font-weight: 400;\">. Tieto pr\u00edkazy menia alebo ma\u017e\u00fa d\u00e1ta a ich nespr\u00e1vne pou\u017eitie m\u00f4\u017ee ma\u0165 nemil\u00e9 n\u00e1sledky \u2013 najm\u00e4 v produk\u010dn\u00fdch prostrediach.<\/span><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pracujete s Google Analytics a ob\u010das potrebujete z\u00edska\u0165 \u201craw\u201d \u00fadaje z BigQuery \u2014 napr\u00edklad ko\u013eko kr\u00e1t sa spustil&#8230;<\/p>\n","protected":false},"author":78,"featured_media":20781,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[637,640],"tags":[673,1036],"_links":{"self":[{"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/posts\/20774"}],"collection":[{"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/users\/78"}],"replies":[{"embeddable":true,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/comments?post=20774"}],"version-history":[{"count":12,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/posts\/20774\/revisions"}],"predecessor-version":[{"id":20776,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/posts\/20774\/revisions\/20776"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/media\/20781"}],"wp:attachment":[{"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/media?parent=20774"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/categories?post=20774"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.dase-analytics.com\/blog\/sk\/wp-json\/wp\/v2\/tags?post=20774"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}