[{"data":1,"prerenderedAt":909},["ShallowReactive",2],{"{\"version\":\"published\",\"language\":\"pl\"}layout":3,"{\"version\":\"published\",\"language\":\"pl\"}content/knowledge/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis":210,"2IlvloL7O9":251,"CcvT3iGHYr":276,"ECg4XWQXOs":294},{"data":4,"headers":188},{"story":5,"cv":185,"rels":186,"links":187},{"name":6,"created_at":7,"published_at":8,"updated_at":9,"id":10,"uuid":11,"content":12,"slug":175,"full_slug":176,"sort_by_date":177,"position":178,"tag_list":179,"is_startpage":32,"parent_id":177,"meta_data":177,"group_id":181,"first_published_at":182,"release_id":177,"lang":183,"path":177,"alternates":184,"default_full_slug":177,"translated_slugs":177},"Layout & Menu Settings","2024-07-09T11:23:15.417Z","2026-08-21T07:00:43.091Z","2026-08-21T07:00:43.104Z",520580076,"d0565ccd-50f8-4a35-9583-813fff54f59a",{"_uid":13,"menu":14,"banner":133,"footer":143,"component":173,"promotion":174},"9245e14a-f18f-4a6c-8060-61e8beb3d9f1",[15],{"_uid":16,"logo":17,"component":22,"rightSide":23,"navigation":40},"fd2f2bd7-3ebb-4923-8327-febceaf9131b",{"id":18,"alt":19,"filename":20,"fieldtype":21},16613298,"","https://a.storyblok.com/f/296300/2078x457/3b34c3fe19/witbee-logo-new.png","asset","mega-menu",[24,34],{"_uid":25,"href":26,"size":27,"text":28,"target":29,"rounded":30,"variant":31,"disabled":32,"component":33,"showArrow":32},"839bb546-784b-4ba0-871b-263f3c901b86","/pl/contact-free-consultation","md","Bezpłatna konsultacja","_self","none","primary",false,"button-blok",{"_uid":35,"href":36,"size":27,"text":37,"target":29,"rounded":30,"variant":38,"disabled":32,"component":33,"showArrow":39},"32d63a94-8cbd-474c-9ce1-457cfa576ccf","https://cloud.witbee.com","Zaloguj się","secondary",true,[41,50,88,127],{"_uid":42,"link":43,"name":47,"subItems":48,"component":49},"3f3dab6a-9cd6-4ea1-9fdd-645b62d9cb49",{"id":19,"url":44,"linktype":45,"fieldtype":46,"cached_url":44},"/pl/services","url","multilink","Usługi",[],"mega-menu-item",{"_uid":51,"link":52,"name":53,"subItems":54,"component":49},"6951d7b0-368d-4db6-85fa-80af9088e8e0",{"id":19,"url":44,"linktype":45,"fieldtype":46,"cached_url":44},"Platforma WitCloud",[55],{"_uid":56,"links":57,"title":86,"component":87},"9e0dbc8d-3b23-474c-ab56-2eba6486c651",[58,65,72,79],{"_uid":59,"icon":60,"link":61,"component":63,"lowerText":64,"upperText":53},"2144a1bf-1bdf-4a82-9f59-b5e7d7f73f47","InformationCircleIcon",{"id":19,"url":62,"linktype":45,"fieldtype":46,"cached_url":62},"/pl/witcloud","mega-menu-subitem-link","Dowiedz się czym jest WitCloud",{"_uid":66,"icon":67,"link":68,"component":63,"lowerText":70,"upperText":71},"a6f22621-aa4f-4b0c-be09-11b4140d7dea","UsersIcon",{"id":19,"url":69,"linktype":45,"fieldtype":46,"cached_url":69},"/pl/witcloud/integrations","Systemy reklamowe, platformy e-commerce i więcej","Lista dostępnych integracji",{"_uid":73,"icon":74,"link":75,"component":63,"lowerText":77,"upperText":78},"42267fc4-06a8-465a-a3cf-56a311ff7022","NewspaperIcon",{"id":19,"url":76,"linktype":45,"fieldtype":46,"cached_url":76},"/pl/witcloud/pricing","Sprawdź szczegóły dotyczące subskrypcji","Cennik",{"_uid":80,"icon":81,"link":82,"component":63,"lowerText":84,"upperText":85},"6333bd24-c3b2-46ba-8dc2-93770459a0bc","BriefcaseIcon",{"id":19,"url":83,"linktype":45,"fieldtype":46,"cached_url":83},"/pl/witcloud/docs/","Sprawdź jak korzystać z platformy","Dokumentacja","WitCloud","mega-menu-subitem",{"_uid":89,"link":90,"name":92,"subItems":93,"component":49},"0182c7f6-b9d7-4e01-81bd-97635c68d72f",{"id":19,"url":91,"linktype":45,"fieldtype":46,"cached_url":91},"/pl/content","Materiały",[94],{"_uid":95,"links":96,"title":92,"component":87},"0f09839c-f7ce-48b8-8dc4-9269791644c0",[97,102,108,115,121],{"_uid":98,"icon":74,"link":99,"component":63,"lowerText":100,"upperText":101},"dd3ac1b6-d987-496d-bb75-e0db7459a79f",{"id":19,"url":91,"linktype":45,"fieldtype":46,"cached_url":91},"Wszystkie nasze materiały w jednym miejscu","Wszystkie materiały",{"_uid":103,"icon":60,"link":104,"component":63,"lowerText":106,"upperText":107},"5a1e2f7a-1111-4a00-9101-aa0000000101",{"id":19,"url":105,"linktype":45,"fieldtype":46,"cached_url":105},"/pl/content/framework","Nasz framework analityczny krok po kroku","Framework",{"_uid":109,"icon":110,"link":111,"component":63,"lowerText":113,"upperText":114},"5a1e2f7a-2222-4a00-9102-aa0000000102","VideoCameraIcon",{"id":19,"url":112,"linktype":45,"fieldtype":46,"cached_url":112},"/pl/content/webinars","Nagrania naszych szkoleń online","Webinary",{"_uid":116,"icon":81,"link":117,"component":63,"lowerText":119,"upperText":120},"5a1e2f7a-3333-4a00-9103-aa0000000103",{"id":19,"url":118,"linktype":45,"fieldtype":46,"cached_url":118},"/pl/content/case-studies","Efekty naszej pracy u klientów","Case studies",{"_uid":122,"icon":74,"link":123,"component":63,"lowerText":125,"upperText":126},"5a1e2f7a-4444-4a00-9104-aa0000000104",{"id":19,"url":124,"linktype":45,"fieldtype":46,"cached_url":124},"/pl/content/knowledge","Poradniki o GA4, BigQuery i nie tylko","Baza wiedzy",{"_uid":128,"link":129,"name":131,"subItems":132,"component":49},"eaef6de5-12a1-40f0-8bcf-3e00472ef87e",{"id":19,"url":130,"linktype":45,"fieldtype":46,"cached_url":130},"/pl/contact","Kontakt",[],[134],{"_uid":135,"link":136,"boldText":140,"component":141,"normalText":142},"d23b7c9c-c50d-4704-a330-c5d89f673a95",{"id":137,"url":19,"linktype":138,"fieldtype":46,"cached_url":139,"prep":39},"78736e51-560e-41cc-99bc-47d81c3321ec","story","/pl/content/webinars/webinar-ltv-retencja-akwizycja","Webinar Live: Analiza Klienta 3.0","banner-blok","Zapisz się na webinar",[144],{"_uid":145,"logo":146,"columns":147,"socials":169,"footnote":170,"component":171,"newsletter":172},"6bbe2605-0003-4e0f-9c83-f57387d6b9dc",{"id":18,"alt":19,"filename":20,"fieldtype":21},[148],{"_uid":149,"links":150,"title":167,"component":168},"bb943e00-cbd9-44d3-9ca8-e287f92f9a4c",[151,157,162],{"_uid":152,"link":153,"name":155,"component":156},"fa11f2ce-87a4-40b7-8c26-2248948ecdab",{"id":19,"url":154,"linktype":45,"fieldtype":46,"cached_url":154},"/pl/legal/privacy-policy","Polityka prywatności","website-footer-link",{"_uid":158,"link":159,"name":161,"component":156},"29ce4cf1-4ae3-4c03-a924-1b7283a52cea",{"id":19,"url":160,"linktype":45,"fieldtype":46,"cached_url":160},"/pl/legal/witcloud-terms-of-use","WitCloud - Regulamin",{"_uid":163,"link":164,"name":166,"component":156},"7b2b71ce-9047-493a-ae9a-24f33d13b228",{"id":19,"url":165,"linktype":45,"fieldtype":46,"cached_url":165},"/pl/legal/witcloud-privacy-policy","WitCloud - Polityka prywatności","Dział prawny","website-footer-column",[],"©2025 Witbee sp. z o o. Wszelkie prawa zastrzeżone.","website-footer",[],"layout-blok",[],"layout","pl/layout",null,30,[180],"Global","961eba08-4135-4b80-aba4-032c02789c49","2024-07-12T13:10:50.158Z","pl",[],1788963673,[],[],{"age":189,"cache-control":190,"connection":191,"content-encoding":192,"content-type":193,"date":194,"etag":195,"referrer-policy":196,"sb-be-version":197,"server":198,"transfer-encoding":199,"vary":200,"via":201,"x-amz-cf-id":202,"x-amz-cf-pop":203,"x-cache":204,"x-content-type-options":205,"x-frame-options":206,"x-permitted-cross-domain-policies":30,"x-request-id":207,"x-runtime":208,"x-xss-protection":209},"13","max-age=0, public, s-maxage=604800, stale-if-error=3600","keep-alive","gzip","application/json; charset=utf-8","Wed, 09 Sep 2026 14:24:49 GMT","W/\"9ef810ab6bf8c35b5a82e4e7cb0dee01\"","strict-origin-when-cross-origin","5.959.0","nginx/1.29.1","chunked","Origin,Accept-Encoding","1.1 bb472df49b0bfc8b76d1b317bd737146.cloudfront.net (CloudFront)","03XZtUlVqCw5D9e0E2iYIch5-8jMpL-SLAFT5fqKI7A_5d_qVMRoag==","WAW51-P2","Hit from cloudfront","nosniff","SAMEORIGIN","3b91d0e2-5611-4eed-b103-f6a7569450f7","0.056638","0",{"data":211,"headers":244},{"story":212,"cv":185,"rels":242,"links":243},{"name":213,"created_at":214,"published_at":215,"updated_at":216,"id":217,"uuid":218,"content":219,"slug":235,"full_slug":236,"sort_by_date":177,"position":237,"tag_list":238,"is_startpage":32,"parent_id":239,"meta_data":177,"group_id":240,"first_published_at":215,"release_id":177,"lang":183,"path":177,"alternates":241,"default_full_slug":177,"translated_slugs":177},"Google Analytics 4 [GA4] BigQuery - 9 challenges to surprise you in data analysis","2026-06-23T08:28:33.008Z","2026-08-21T07:00:41.845Z","2026-08-21T07:00:43.184Z",190520168536775,"cbd46d2c-d585-4da6-91ea-754c8fc8b69b",{"_uid":220,"title":221,"content":222,"eyebrow":19,"showTOC":39,"category":223,"readTime":19,"subtitle":224,"component":225,"heroImage":226,"meta_tags":230,"meta_title":231,"heroButtons":232,"updatedDate":233,"bottomBlocks":234},"b6f75232-4b82-49d2-845a-284ebf9d3c5d","Google Analytics 4 [GA4] BigQuery - 9 wyzwań, które Cię zaskoczy podczas analizy danych","## Kontynuacja serii wpisów o danych Google Analytics 4 [GA4] w BigQuery [Seria artykułów]\n\nArtykuł ten jest elementem z serii wpisów o Google Analytics 4 i eksporcie danych do Google BigQuery, składającym się z następujących pozycji:\n\n\n\n- [#1 Google Analytics 4 BigQuery - dlaczego warto korzystać ?](https://witbee.com/pl/blog/google-analytics-4-bigquery-dlaczego-warto-korzystac)  \n- [#2 Google Analytics 4 BigQuery - 9 wyzwań, które Cię zaskoczy podczas analizy danych](https://witbee.com/pl/blog/google-analytics-4-bigquery-9-wyzwan-ktore-cie-zaskoczy-podczas-analizy-danych )  (obecnie go czytasz)\n- [#3 Google Analytics 4 BigQuery - źródła ruchu, sesje, atrybucja, koszty marketingowe i gotowe dane do analiz](https://witbee.com/pl/blog/google-analytics-4-bigquery-zrodla-ruchu-sesje-atrybucja-koszty-marketingowe-i-gotowe-dane-do-analiz)\n\n\n\nW poprzednim wpisie [Google Analytics 4 BigQuery - dlaczego warto korzystać ?](https://witbee.com/pl/blog/google-analytics-4-bigquery-dlaczego-warto-korzystac) omówiliśmy szereg argumentów mówiących o tym dlaczego warto korzystać z eksportu danych Google Analytics 4 w BigQuery. \nPodczas interakcji z danymi możemy jednak napotkać na różne trudności o których warto wiedzieć wcześniej, zanim spędzimy wiele godzin nad detektywistyczną próbą ich pokonania. Postanowiliśmy więc napisać artykuł informacyjny o tych problemach - jest to zbiór naszych doświadczeń z projektów bazujących na eksporcie danych z Google Analytics 4. \n\n\n\n## Dane raportowane w Google BigQuery będą inne niż te, które widać w panelu Google Analytics 4 [GA4] [Dane inne niż w panelu]\n\nPierwszym zadaniem jakie sobie postawiliśmy podczas pracy z eksportem danych Google Analytics 4 w BigQuery było odtworzenie logiki raportów, które możemy znaleźć w interfejsie. W ten sposób możemy bardzo dużo się nauczyć i zrozumieć dokładnie jak dane metryki i wymiary są liczone oraz zwalidować poprawność naszych zapytań. \n\n\n\nTutaj zadanie okazało się utrudnione, gdyż zgodnie [z dokumentacją Google Analytics 4](https://support.google.com/analytics/answer/9191807?hl=pl) dane w panelu mogą się różnić od tych, które będziemy obliczać w BigQuery.\n\n\n\nNawet jak dane w panelu Google Analytics 4 pokazują, że nie są próbkowane, to liczba sesji i tak jest estymacją na podstawie liczby unikalnych identyfikatorów sesji. Więcej o tym można poczytać w tym miejscu: [Unique count approximation in Google Analytics](https://developers.google.com/analytics/blog/2022/hll)\n\n\n\n![How Google Analytics 4 Calculate Sessions](https://a.storyblok.com/f/46798/671x92/65aa7fa106/google-analytics-4-bigquery-number-of-sessions.png)\n\n\n\nW BigQuery najczęściej nie korzystamy z funkcji estymacji, w związku z tym możemy zauważyć różnice np. w liczbie sesji w porównaniu z wynikami podawanymi w raportach standardowych i eksploracyjnych czy też w Looker Studio. \n\n\n\nDostajemy więc poniższe rekomendacje od Google:\n\n\n\n- Jeżeli chcemy uzyskać dokładniejsze wyniki na podstawie nieprzetworzonych danych, powinniśmy użyć do tego eksportu danych w Google BigQuery\n- Jeżeli zależy nam na szybkim otrzymaniu wyników uwzględniając margines błędu, najlepiej sprawdzać je w raportach w panelu  \n\n\n\n![Google Analytics 4 BigQuery Data Precision](https://a.storyblok.com/f/46798/904x264/f30627a14d/google-analytics-4-bigquery-data-precision.png)\n\n## Informacje o źródłach kampanii - w BigQuery mamy obliczone tylko pierwsze źródło pozyskania użytkownika [Tylko pierwsze źródło]\n\nNajpopularniejszym raportem w Google Analytics Universal był niewątpliwie raport przedstawiający źródło/medium. Taki raport został również odtworzony w Google Analytics 4. Możemy go znaleźć w domyślnej sekcji Acquisition -> Traffic Acquisition. \n\n\n\n\n![Google Analytics 4 - Source/Medium Report](https://a.storyblok.com/f/46798/1780x780/a49616841d/google-analytics-4-source-medium-report.png)\n\n\n\nW tym raporcie wykorzystywany jest wymiar o nazwie “Session source/medium”, który informuje nas o źródle pochodzenia danej sesji. \n\n\n\nPrzeglądając dane wyeksportowane do Google BigQuery dla  GA4 napotykamy pola nazwane traffic_source.source, traffic_source.medium, traffic_source.name (nazwa kampanii), które bardzo często są błędnie wykorzystywane do odtworzenia powyższego raportu. \n\n\n\n![Google Analytics 4 BigQuery traffic_source field example](https://a.storyblok.com/f/46798/752x63/4647884f9c/google-analytics-4-bigquery-traffic-source-example.png)\n\n\n\nProblem polega jednak na tym, że są to pola informujące nas o tym co wystąpiło w pierwszej kampanii od czasu pozyskania tego użytkownika, a nie o źródle, które wystąpiło w danej sesji, tak jak możemy to przeglądać w raportach i wymiarze “Session source/medium”.\n\n\n\n![Google Analytics 4 BigQuery traffic_source field description](https://a.storyblok.com/f/46798/986x327/0de56d0a96/google-analytics-4-bigquery-traffic-source-field-desc.png)\n\n\n\nKorzystając z tych pól w tabeli osiągniemy więc inny obraz niż w przypadku wymiaru “Session source / medium” w panelu.\n\n\n\n![Google Analytics 4 BigQuery traffic_source field path example](https://a.storyblok.com/f/46798/790x164/1ae9c65264/google-analytics-4-bigquery-traffic-source-field-behaviour.png)\n\n\n\n\u003Cspan style='color:red'>AKTUALIZACJA - poniższe parametry są aktualnie dostępne na poziomie parametrów zdarzeń oraz w kolumnach znajdujących się w grupie collected_traffic_source. Należy jednak pamiętać, że nie są to dane obliczone zgodnie z logikę wymiarów tj. Session source/medium/campaign\u003C/span>\n\n\n\nAby odtworzyć ten wymiar musimy wyciągnąć parametry kampanii z poziomu eventów, a następnie samemu obliczyć te dane zgodnie z logiką opisaną w dokumentacji dla wszystkich sesji: [[GA4] Scopes of traffic-source dimensions - Analytics Help ](https://support.google.com/analytics/answer/11080067?hl=en&ref_topic=11151952#zippy=%2Cin-this-article)\n\n\n\n![Google Analytics 4 BigQuery Campaign Parameters ](https://a.storyblok.com/f/46798/913x374/f97bc5ec82/google-analytics-4-bigquery-campaign-info.png)\n\n\n\n## Google Analytics 4 [GA4] wykonuje deduplikację na użytkownikach pomiędzy urządzeniami [Deduplikacja między urządzeniami]\n\n\n\nDużą rewolucją w Google Analytics 4 w porównaniu do Google Analytics Universal jest możliwość połączenia danych pomiędzy platformami/urządzeniami. Implementując usługę Google Analytics 4 na naszej stronie internetowej oraz w aplikacji mobilnej jesteśmy w stanie uzyskać jedno przejrzyste źródło analiz dla tych platform. \n\n\n\nDomyślnie Google Analytics dla każdego urządzenia/przeglądarki generuje “user_pseudo_id”, czyli nowe ciasteczko (strona internetowa) lub identyfikator (aplikacja mobilna). Na podstawie tego identyfikatora wykonywane są obliczenia niezbędne do przedstawienia wszystkich metryk i wymiarów w panelu. \nJeden użytkownik może odwiedzić naszą stronę lub aplikację z różnych urządzeń. Jeżeli odwiedzi nas na stronie internetowej na komputerze, następnie na stronie internetowej na urządzeniu mobilnym, a na końcu w aplikacji mobilnej to będzie identyfikowany jako 3 różnych użytkowników. \n\n\n\nJeżeli zdecydujemy się na włączenie usługi [Google Signals](https://support.google.com/analytics/answer/9445345?hl=pl&ref_topic=9303474#zippy=%2Ctematy-w-tym-artykule) lub implementację [funkcji User ID](https://support.google.com/analytics/answer/9213390?hl=pl) (np. własny identyfikator z bazy danych podczas logowania lub zakupu), Google Analytics przeprowadzi na Twoich danych deduplikację (na ile jest to możliwe w przypadku opcji Google Signals) , co wpłynie na liczbę użytkowników oraz atrybucję kanałów marketingowych. Dane możemy przeglądać na różnym poziomie (po deduplikacji lub bez deduplikacji) w zależności od naszych ustawień tożsamości w usłudze Google Analytics 4 - więcej o tym znajduje się tutaj: [[GA4] Tożsamość raportowania - Analytics - Pomoc ](https://support.google.com/analytics/answer/10976610?hl=pl)\n\n\n\n![Google Analytics 4 User Identity](https://a.storyblok.com/f/46798/1036x468/248ad8555a/google-analytics-4-user-identity.png)\n\n\n\nWarto jednak pamiętać, że dane Google Signals to dane, które Google potrafi połączyć z użytkownikami, którzy zalogowali się na swoje konta Google i mają włączoną personalizację reklam. Powiązanie tych danych z zalogowanymi użytkownikami umożliwia przedstawienie dokładniejszej liczby użytkowników w raportach. Ze względu na politykę prywatności użytkowników, firma Google nie może nam tych danych udostępnić, co wpływa również na rozbieżności w danych pomiędzy interfejsem, a raportach w Google BigQuery. Więcej o tym można poczytać tutaj: [[GA4] Aktywacja Google Signals w usługach Google Analytics 4](https://support.google.com/analytics/answer/9445345?hl=pl&ref_topic=9303474#zippy=%2Ctematy-w-tym-artykule)\n\n\n\n![Google Analytics 4 BigQuery Show More Users ](https://a.storyblok.com/f/46798/981x169/ee1df82f28/google-analytics-4-bigquery-export-show-more-users.png)\n\n\n\nWarto pamiętać - jeżeli mamy zaimplementowany parametr user_id na swojej witrynie lub aplikacji, wciąż możemy starać się odtworzyć deduplikację użytkowników w BigQuery - tylko w ten sposób osiągniemy poprawną liczbę użytkowników oraz prawidłową atrybucję źródeł ruchu do sesji zgodnie z logikę “Cross-Device”. \n\n\n\nZ problemem deduplikacji oraz potencjalnym rozwiązaniem można zapoznać się w artykule [Complex Deduplication in BigQuery | by Benjamin Campbell ](https://benjaminsky.medium.com/complex-deduplication-in-bigquery-a3c5e78dec2b)\n\n\n\n## Jeden identyfikator sesji (ga_session_id) może zostać przypisany do 2 różnych użytkowników [Jedno ID sesji, 2 użytkowników]\n\n\n\nW programowaniu intensywnie wykorzystuje się znaczniki czasu, czyli tzw. timestamp. \nDana ta pozwala określić moment, w którym zaszło określone zdarzenie.\nWartość takiego znacznika definiowana jest na podstawie “Unix Time”, czyli systemie reprezentacji czasu mierzącego liczbę sekund od początku 1970 roku.\n\n\n\nDla przykładu Timestamp 1672481243 reprezentuje datę i godzinę: 2022-12-31 10:07:23\nJest to więc 1672481243 sekund od początku 1970 roku. \n\n\n\nPrzeglądając dane Google Analytics 4 w BigQuery również mamy dużo kontaktu ze znacznikami czasu np. pole o nazwie event_timestamp zawiera liczbę mikrosekund od roku 1970.\n\n\n\nKiedy przyjrzymy się identyfikatorowi o nazwie “ga_session_id” zobaczymy, że jest to przybliżony czas pierwszego zdarzenia rozpoczynającego sesje.\n\n\n\n![Google Analytics 4 GA Session ID Duplication](https://a.storyblok.com/f/46798/739x124/c1db345336/google-analytics-4-bigquery-ga_session_id.png)\n\n\n\n\nW związku z tym, że kilku użytkowników może rozpocząć sesje w tym samym czasie (dokładnie w tej samej sekundzie), sam parametr tj. ga_session_id nie daje unikalnego identyfikatora sesji. W tym celu musimy połączyć user_pseudo_id czyli identyfikator użytkownika oraz ga_session_id, aby otrzymać unikalny identyfikator sesji do naszych obliczeń. Możemy to zrobić dzięki funkcji CONCAT.\n\u003Ccode >\nSELECT \n&nbsp;&nbsp;&nbsp;CONCAT(user_pseudo_id, ga_session_id) as session_id\nFROM\n&nbsp;&nbsp;&nbsp;your_google_analytics_4_events\n\u003C/code>\n\n\n\n\nPowstanie nam wtedy unikalny ciąg znaków oznaczający identyfikator danej sesji:\n\n\n\n\u003Cp style='text-align:center'>\u003Cspan style='color:green'>1020668977.1672354709\u003C/span>\u003Cspan style='color:red'>1672354709\u003C/span>\u003Cp>\n\n\n\nCiekawostka - jeżeli przyjrzymy się wartości user_pseudo_id i zobaczymy z czego jest ona złożona, również zauważymy w nim timestamp oznaczający datę utworzenia danego użytkownika. \n\n\n\n\u003Cp style='text-align:center'>\n1020668977.\u003Cspan style='color:red'>1672354709\u003C/span> = {{random number}} + “.” + {{user created timestamp}}\n\u003C/p>\n\n\n\n## Jeden identyfikator sesji może wystąpić w 2 różnych dniach [Jedno ID sesji, 2 dni]\n\n\n\nGoogle Analytics Universal tworzył nową sesję za każdym razem, gdy:\n\n\n\n- nie było interakcji przez więcej niż 30 min (na podstawie domyślnych ustawień) \n- w chwili, gdy zmieniały się parametry kampanii ( tj. utm, gclid, referral)\n- **w chwili, gdy sesja odbywała pomiędzy jednym a drugim dniem**\n\n\n\nPrzykładowo, jeżeli mieliśmy sytuację, w której użytkownik rozpoczął sesję o godz. 23:58, a zakupu dokonał nie odchodząc od komputera o godz. 00:05 następnego dnia, to Google Analytics Universal tworzył w takim przypadku 2 różne identyfikatory sesji - pierwsza trwała od 23:58 do 00:00 a druga od 00:00 do 00:05(zakładając, że zamknął przeglądarkę zaraz po zakupie).\n\n\n\nW przypadku Google Analytics 4 identyfikator sesji pozostanie ten sam pomiędzy jednym a drugim dniem. W związku z tym jeżeli będzie nam zależeć na policzeniu dokładnych metryk dla danej sesji, musimy pamiętać, aby w trakcie analiz brać pod uwagę również dane z dnia poprzedniego np. w celu sprawdzenia strony wejścia/docelowej dla danej sesji. Wpływa to na wielkość procesowanych danych i konieczność stosowania dodatkowych modyfikacji w zapytaniach SQL. \n\n\n\n## Adres url strony (page_location) może mieć maksymalnie 1000 znaków [URL do 1000 znaków]\n\n\n\n\u003Cspan style='color:red'>AKTUALIZACJA - ograniczenia limitu znaków dla parametru page_location zostały zmienione z 420 na 1000 znaków\u003C/span>\n\n\n\n\nJeżeli masz długie adresy url, wykorzystujące wiele parametrów to analiza tych danych w BigQuery może Cię zaskoczyć. Podczas jednego z projektów klient poprosił nas o analizę filtrów wybieranych przez użytkownika na podstawie parametrów znajdujących się w adresach url. Z optymizmem usiedliśmy do zadania, pisząc wyrażenia regularne pozwalające na ekstraktowanie parametrów z adresów url.\nPo krótkiej analizie, zauważyliśmy, że części parametrów nie ma lub często są ucinane w adresach url. Postanowiliśmy więc sprawdzić maksymalną długość adresów url i okazało się, że spora część ma zawsze 420 znaków - wszystkie te adresy miały ucięte parametry ze względu na długość. \n\n\n\n![Google Analytics 4 page_location max 420 characters](https://a.storyblok.com/f/46798/1020x110/421b49949a/google-analytics-4-page-location-max-420-characters.png)\n\n\n\nNasza rekomendacja: jeżeli wiemy, że dane parametry url będą dla nas bardzo istotne podczas analizy danych, powinniśmy je wtedy przekazać jako parametry zdarzenia. Pamiętajmy jednak, że page_location to parametr systemowy, który może mieć \u003Cs>420\u003C/s> 1000 znaków. W przypadku niestandardowych parametrów limit znaków wynosi 100. Więcej o limitach można przeczytaj tutaj: [[GA4] Event collection limits - Analytics Help](https://support.google.com/analytics/answer/9267744?hl=en)\n\n\n\n## Dane bez zgody analitycznej nie zawierają informacji o user_pseudo_id i ga_session_id [Dane bez zgody]\n\n\n\n\nJeżeli mamy poprawnie zaimplementowaną funkcję consent mode od Google, dane mogą trafiać do Google Analytics w różnej postaci. Jeżeli użytkownik nie wyraził zgody na jego identyfikację poprzez cookie, jego zdarzenia będą wysyłane do Google BigQuery, ale parametry tj. user_pseudo_id oraz session_id będą miały wartość null. Jeżeli planujemy więc podczas analiz wykorzystywać te dane do łączenia lub innych obliczeń warto o tym pamiętać, gdyż wiele danych może nam się zgrupować do jednego nieistniejącego użytkownika lub do jednej nieistniejącej sesji.\n\n\n\n![Google Analytics 4 BigQuery Consent Mode Data](https://a.storyblok.com/f/46798/861x675/3ffd4a1a5a/google-analytics-4-bigquery-consent-mode.png)\n\n\n\n## W chwili, gdy nasze transakcje trafiają do Google Analytics w różnych walutach, musimy zadbać o ich przeliczenie [Różne waluty]\n\n\n\nJeżeli na naszej stronie lub w aplikacji użytkownicy mogą dokonywać zakupów w różnych walutach, musimy zadbać o przekonwertowanie wartości do waluty, która została ustawiona w ustawieniach danej usługi.\nW przypadku przesyłania w implementacji parametru zdarzenia “currency”, Google Analytics 4 udostępnia nam dodatkowe pola, w których znajdują się automatycznie przekonwertowane dane do waluty USD. Niestety nie możemy nigdzie zdefiniować waluty, w której chcielibyśmy zrzucać dane do Google BigQuery. W związku z tym jeżeli mamy w swoich ustawieniach usługi wybraną walutę np. PLN, to w takim przypadku będziemy musieli ściągnąć do Google BigQuery informacje o kursie z danego dnia i samodzielnie przekonwertować te informację, aby móc odwzorować to co widzimy w panelu. \n\n\n\n\n![Google Analytics 4 BigQuery - Currency Conversion Value](https://a.storyblok.com/f/46798/952x188/e9b7084fe5/google-analytics-4-bigquer-currency-conversion.png)\n\n\n\n## Brak pełnych informacji o pełnych danych Google Ads oraz podatność na zmiany nazw kampanii [Ograniczenia danych Google Ads]\n\n\n\nW eksporcie danych Google Analytics Universal do BigQuery byliśmy przyzwyczajeni do bogatych informacji na temat kampanii Google Ads. \n\n\n\n![Google Analytics 4 BigQuery Missing Google Ads Data](https://a.storyblok.com/f/46798/718x575/99b5b1dfe4/google-analytics-4-bigquery-missing-google-ads-data.png)\n\n\n\nTak jak wcześniej wspomnieliśmy, w przypadku danych Google BigQuery mamy obliczone tylko 3 pola tj. traffic_source.source, traffic_source.medium oraz traffic_source.name i są to pola, które mówią o pozyskaniu użytkownika, a nie o źródłach danej sesji. \nW przypadku chęci wzbogacenia danych Google Analytics 4 o dodatkowe informacje z Google Ads między innymi identyfikator konta reklamowego, identyfikator kampanii, typ kampanii, musimy zadbać o zaciągnięcie tabel Google Ads do Google BigQuery, a dopiero w następnym kroku o połączenie ich za pomocą dodatkowych instrukcji SQL. Proces ten potrafi dosyć mocno rozbudowywać logikę zapytań, w związku z tym jest to kolejne utrudnienie, na które musimy być gotowi podczas eksploracji danych.\n\n\n\n## Podsumowanie\n\nGoogle Analytics 4 i możliwość eksportu danych do Google BigQuery to świetne rozwiązanie, dla wszystkich firm, które chcą podejmować sprawne decyzje na podstawie danych. Jeżeli chcemy jednak w pełni wykorzystać ich potencjał i działać zgodnie z najnowszymi praktykami związanymi z mierzeniem ruchu pomiędzy urządzeniami musimy poświęcić sporo czasu na przeprocesowanie tych danych (deduplikacja użytkowników, atrybucja źródeł ruchu, łączenie danych Google Ads). Musimy być również gotowi na rozbieżności danych pomiędzy panelem Google Analytics 4, a tym co dostaniemy jako wynik w Google BigQUery. \n\nNa szczęście większość problemów związanych z procesowaniem danych da się zautomatyzować - o tym jak do tego podeszliśmy napisaliśmy kolejny artykuł [“Google Analytics 4 BigQuery - sesje, atrybucja i gotowe dane do analiz”](https://witbee.com/pl/blog/google-analytics-4-bigquery-zrodla-ruchu-sesje-atrybucja-koszty-marketingowe-i-gotowe-dane-do-analiz). ","knowledge","Podczas interakcji z danymi Google Analytics 4 [GA4] w BigQuery możemy napotkać różne trudności o których warto wiedzieć wcześniej, zanim spędzimy wiele godzin nad detektywistyczną próbą ich pokonania.","content-page",{"id":227,"alt":19,"name":19,"focus":19,"title":19,"source":19,"filename":228,"copyright":19,"fieldtype":21,"meta_data":229,"is_external_url":32},190527407499343,"https://a.storyblok.com/f/296300/900x600/07a6ad8a1c/11-ga4-bigquery-9-challenges.png",{},[],"Google Analytics 4 [GA4] BigQuery - 9 wyzwań, które Cę zaskoczy podczas analizy danych",[],"2025-02-25 00:00",[],"google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis","pl/content/knowledge/google-analytics-4-bigquery-9-challenges-to-surprise-you-in-data-analysis",10,[],191213970958235,"4f75bf07-79d3-4f9f-8ceb-37bdb2ff7e9c",[],[],[],{"cache-control":190,"connection":191,"content-encoding":192,"content-type":193,"date":245,"etag":246,"referrer-policy":196,"sb-be-version":197,"server":198,"transfer-encoding":199,"vary":200,"via":201,"x-amz-cf-id":247,"x-amz-cf-pop":203,"x-cache":248,"x-content-type-options":205,"x-frame-options":206,"x-permitted-cross-domain-policies":30,"x-request-id":249,"x-runtime":250,"x-xss-protection":209},"Wed, 09 Sep 2026 14:25:02 GMT","W/\"255347be6161122f656dec3bfd526291\"","ajktJTX_iZDcIt31kWEpF1pWPjF4VUIytV9inUe6-iaG-lPhdiVPyw==","Miss from cloudfront","550f522a-e4c0-43c9-a459-a079653eb224","0.044785",{"data":252,"body":254,"excerpt":-1,"toc":273},{"title":19,"description":253},"Google Analytics 4 GA4 BigQuery - 9 wyzwań, które Cię zaskoczy podczas analizy danych",{"type":255,"children":256},"root",[257],{"type":258,"tag":259,"props":260,"children":261},"element","p",{},[262,265,271],{"type":263,"value":264},"text","Google Analytics 4 ",{"type":258,"tag":266,"props":267,"children":268},"span",{},[269],{"type":263,"value":270},"GA4",{"type":263,"value":272}," BigQuery - 9 wyzwań, które Cię zaskoczy podczas analizy danych",{"title":19,"searchDepth":274,"depth":274,"links":275},2,[],{"data":277,"body":279,"excerpt":-1,"toc":292},{"title":19,"description":278},"Podczas interakcji z danymi Google Analytics 4 GA4 w BigQuery możemy napotkać różne trudności o których warto wiedzieć wcześniej, zanim spędzimy wiele godzin nad detektywistyczną próbą ich pokonania.",{"type":255,"children":280},[281],{"type":258,"tag":259,"props":282,"children":283},{},[284,286,290],{"type":263,"value":285},"Podczas interakcji z danymi Google Analytics 4 ",{"type":258,"tag":266,"props":287,"children":288},{},[289],{"type":263,"value":270},{"type":263,"value":291}," w BigQuery możemy napotkać różne trudności o których warto wiedzieć wcześniej, zanim spędzimy wiele godzin nad detektywistyczną próbą ich pokonania.",{"title":19,"searchDepth":274,"depth":274,"links":293},[],{"data":295,"body":296,"excerpt":-1,"toc":893},{"title":19,"description":19},{"type":255,"children":297},[298,311,316,355,368,378,383,397,409,418,423,428,441,449,455,460,468,473,478,486,491,499,504,512,521,533,541,552,557,562,592,600,611,619,624,636,642,647,652,657,662,670,681,686,701,706,717,723,728,750,755,760,766,774,779,787,807,813,818,826,832,837,845,851,856,864,869,875,880],{"type":258,"tag":299,"props":300,"children":302},"h2",{"id":301},"kontynuacja-serii-wpisów-o-danych-google-analytics-4-ga4-w-bigquery",[303,305,309],{"type":263,"value":304},"Kontynuacja serii wpisów o danych Google Analytics 4 ",{"type":258,"tag":266,"props":306,"children":307},{},[308],{"type":263,"value":270},{"type":263,"value":310}," w BigQuery",{"type":258,"tag":259,"props":312,"children":313},{},[314],{"type":263,"value":315},"Artykuł ten jest elementem z serii wpisów o Google Analytics 4 i eksporcie danych do Google BigQuery, składającym się z następujących pozycji:",{"type":258,"tag":317,"props":318,"children":319},"ul",{},[320,333,345],{"type":258,"tag":321,"props":322,"children":323},"li",{},[324],{"type":258,"tag":325,"props":326,"children":330},"a",{"href":327,"rel":328},"https://witbee.com/pl/blog/google-analytics-4-bigquery-dlaczego-warto-korzystac",[329],"nofollow",[331],{"type":263,"value":332},"#1 Google Analytics 4 BigQuery - dlaczego warto korzystać ?",{"type":258,"tag":321,"props":334,"children":335},{},[336,343],{"type":258,"tag":325,"props":337,"children":340},{"href":338,"rel":339},"https://witbee.com/pl/blog/google-analytics-4-bigquery-9-wyzwan-ktore-cie-zaskoczy-podczas-analizy-danych",[329],[341],{"type":263,"value":342},"#2 Google Analytics 4 BigQuery - 9 wyzwań, które Cię zaskoczy podczas analizy danych",{"type":263,"value":344},"  (obecnie go czytasz)",{"type":258,"tag":321,"props":346,"children":347},{},[348],{"type":258,"tag":325,"props":349,"children":352},{"href":350,"rel":351},"https://witbee.com/pl/blog/google-analytics-4-bigquery-zrodla-ruchu-sesje-atrybucja-koszty-marketingowe-i-gotowe-dane-do-analiz",[329],[353],{"type":263,"value":354},"#3 Google Analytics 4 BigQuery - źródła ruchu, sesje, atrybucja, koszty marketingowe i gotowe dane do analiz",{"type":258,"tag":259,"props":356,"children":357},{},[358,360,366],{"type":263,"value":359},"W poprzednim wpisie ",{"type":258,"tag":325,"props":361,"children":363},{"href":327,"rel":362},[329],[364],{"type":263,"value":365},"Google Analytics 4 BigQuery - dlaczego warto korzystać ?",{"type":263,"value":367}," omówiliśmy szereg argumentów mówiących o tym dlaczego warto korzystać z eksportu danych Google Analytics 4 w BigQuery.\nPodczas interakcji z danymi możemy jednak napotkać na różne trudności o których warto wiedzieć wcześniej, zanim spędzimy wiele godzin nad detektywistyczną próbą ich pokonania. Postanowiliśmy więc napisać artykuł informacyjny o tych problemach - jest to zbiór naszych doświadczeń z projektów bazujących na eksporcie danych z Google Analytics 4.",{"type":258,"tag":299,"props":369,"children":371},{"id":370},"dane-raportowane-w-google-bigquery-będą-inne-niż-te-które-widać-w-panelu-google-analytics-4-ga4",[372,374],{"type":263,"value":373},"Dane raportowane w Google BigQuery będą inne niż te, które widać w panelu Google Analytics 4 ",{"type":258,"tag":266,"props":375,"children":376},{},[377],{"type":263,"value":270},{"type":258,"tag":259,"props":379,"children":380},{},[381],{"type":263,"value":382},"Pierwszym zadaniem jakie sobie postawiliśmy podczas pracy z eksportem danych Google Analytics 4 w BigQuery było odtworzenie logiki raportów, które możemy znaleźć w interfejsie. W ten sposób możemy bardzo dużo się nauczyć i zrozumieć dokładnie jak dane metryki i wymiary są liczone oraz zwalidować poprawność naszych zapytań.",{"type":258,"tag":259,"props":384,"children":385},{},[386,388,395],{"type":263,"value":387},"Tutaj zadanie okazało się utrudnione, gdyż zgodnie ",{"type":258,"tag":325,"props":389,"children":392},{"href":390,"rel":391},"https://support.google.com/analytics/answer/9191807?hl=pl",[329],[393],{"type":263,"value":394},"z dokumentacją Google Analytics 4",{"type":263,"value":396}," dane w panelu mogą się różnić od tych, które będziemy obliczać w BigQuery.",{"type":258,"tag":259,"props":398,"children":399},{},[400,402],{"type":263,"value":401},"Nawet jak dane w panelu Google Analytics 4 pokazują, że nie są próbkowane, to liczba sesji i tak jest estymacją na podstawie liczby unikalnych identyfikatorów sesji. Więcej o tym można poczytać w tym miejscu: ",{"type":258,"tag":325,"props":403,"children":406},{"href":404,"rel":405},"https://developers.google.com/analytics/blog/2022/hll",[329],[407],{"type":263,"value":408},"Unique count approximation in Google Analytics",{"type":258,"tag":259,"props":410,"children":411},{},[412],{"type":258,"tag":413,"props":414,"children":417},"img",{"alt":415,"src":416},"How Google Analytics 4 Calculate Sessions","https://a.storyblok.com/f/46798/671x92/65aa7fa106/google-analytics-4-bigquery-number-of-sessions.png",[],{"type":258,"tag":259,"props":419,"children":420},{},[421],{"type":263,"value":422},"W BigQuery najczęściej nie korzystamy z funkcji estymacji, w związku z tym możemy zauważyć różnice np. w liczbie sesji w porównaniu z wynikami podawanymi w raportach standardowych i eksploracyjnych czy też w Looker Studio.",{"type":258,"tag":259,"props":424,"children":425},{},[426],{"type":263,"value":427},"Dostajemy więc poniższe rekomendacje od Google:",{"type":258,"tag":317,"props":429,"children":430},{},[431,436],{"type":258,"tag":321,"props":432,"children":433},{},[434],{"type":263,"value":435},"Jeżeli chcemy uzyskać dokładniejsze wyniki na podstawie nieprzetworzonych danych, powinniśmy użyć do tego eksportu danych w Google BigQuery",{"type":258,"tag":321,"props":437,"children":438},{},[439],{"type":263,"value":440},"Jeżeli zależy nam na szybkim otrzymaniu wyników uwzględniając margines błędu, najlepiej sprawdzać je w raportach w panelu",{"type":258,"tag":259,"props":442,"children":443},{},[444],{"type":258,"tag":413,"props":445,"children":448},{"alt":446,"src":447},"Google Analytics 4 BigQuery Data Precision","https://a.storyblok.com/f/46798/904x264/f30627a14d/google-analytics-4-bigquery-data-precision.png",[],{"type":258,"tag":299,"props":450,"children":452},{"id":451},"informacje-o-źródłach-kampanii-w-bigquery-mamy-obliczone-tylko-pierwsze-źródło-pozyskania-użytkownika",[453],{"type":263,"value":454},"Informacje o źródłach kampanii - w BigQuery mamy obliczone tylko pierwsze źródło pozyskania użytkownika",{"type":258,"tag":259,"props":456,"children":457},{},[458],{"type":263,"value":459},"Najpopularniejszym raportem w Google Analytics Universal był niewątpliwie raport przedstawiający źródło/medium. Taki raport został również odtworzony w Google Analytics 4. Możemy go znaleźć w domyślnej sekcji Acquisition -> Traffic Acquisition.",{"type":258,"tag":259,"props":461,"children":462},{},[463],{"type":258,"tag":413,"props":464,"children":467},{"alt":465,"src":466},"Google Analytics 4 - Source/Medium Report","https://a.storyblok.com/f/46798/1780x780/a49616841d/google-analytics-4-source-medium-report.png",[],{"type":258,"tag":259,"props":469,"children":470},{},[471],{"type":263,"value":472},"W tym raporcie wykorzystywany jest wymiar o nazwie “Session source/medium”, który informuje nas o źródle pochodzenia danej sesji.",{"type":258,"tag":259,"props":474,"children":475},{},[476],{"type":263,"value":477},"Przeglądając dane wyeksportowane do Google BigQuery dla  GA4 napotykamy pola nazwane traffic_source.source, traffic_source.medium, traffic_source.name (nazwa kampanii), które bardzo często są błędnie wykorzystywane do odtworzenia powyższego raportu.",{"type":258,"tag":259,"props":479,"children":480},{},[481],{"type":258,"tag":413,"props":482,"children":485},{"alt":483,"src":484},"Google Analytics 4 BigQuery traffic_source field example","https://a.storyblok.com/f/46798/752x63/4647884f9c/google-analytics-4-bigquery-traffic-source-example.png",[],{"type":258,"tag":259,"props":487,"children":488},{},[489],{"type":263,"value":490},"Problem polega jednak na tym, że są to pola informujące nas o tym co wystąpiło w pierwszej kampanii od czasu pozyskania tego użytkownika, a nie o źródle, które wystąpiło w danej sesji, tak jak możemy to przeglądać w raportach i wymiarze “Session source/medium”.",{"type":258,"tag":259,"props":492,"children":493},{},[494],{"type":258,"tag":413,"props":495,"children":498},{"alt":496,"src":497},"Google Analytics 4 BigQuery traffic_source field description","https://a.storyblok.com/f/46798/986x327/0de56d0a96/google-analytics-4-bigquery-traffic-source-field-desc.png",[],{"type":258,"tag":259,"props":500,"children":501},{},[502],{"type":263,"value":503},"Korzystając z tych pól w tabeli osiągniemy więc inny obraz niż w przypadku wymiaru “Session source / medium” w panelu.",{"type":258,"tag":259,"props":505,"children":506},{},[507],{"type":258,"tag":413,"props":508,"children":511},{"alt":509,"src":510},"Google Analytics 4 BigQuery traffic_source field path example","https://a.storyblok.com/f/46798/790x164/1ae9c65264/google-analytics-4-bigquery-traffic-source-field-behaviour.png",[],{"type":258,"tag":259,"props":513,"children":514},{},[515],{"type":258,"tag":266,"props":516,"children":518},{"style":517},"color:red",[519],{"type":263,"value":520},"AKTUALIZACJA - poniższe parametry są aktualnie dostępne na poziomie parametrów zdarzeń oraz w kolumnach znajdujących się w grupie collected_traffic_source. Należy jednak pamiętać, że nie są to dane obliczone zgodnie z logikę wymiarów tj. Session source/medium/campaign",{"type":258,"tag":259,"props":522,"children":523},{},[524,526],{"type":263,"value":525},"Aby odtworzyć ten wymiar musimy wyciągnąć parametry kampanii z poziomu eventów, a następnie samemu obliczyć te dane zgodnie z logiką opisaną w dokumentacji dla wszystkich sesji: ",{"type":258,"tag":325,"props":527,"children":530},{"href":528,"rel":529},"https://support.google.com/analytics/answer/11080067?hl=en&ref_topic=11151952#zippy=%2Cin-this-article",[329],[531],{"type":263,"value":532},"[GA4] Scopes of traffic-source dimensions - Analytics Help ",{"type":258,"tag":259,"props":534,"children":535},{},[536],{"type":258,"tag":413,"props":537,"children":540},{"alt":538,"src":539},"Google Analytics 4 BigQuery Campaign Parameters ","https://a.storyblok.com/f/46798/913x374/f97bc5ec82/google-analytics-4-bigquery-campaign-info.png",[],{"type":258,"tag":299,"props":542,"children":544},{"id":543},"google-analytics-4-ga4-wykonuje-deduplikację-na-użytkownikach-pomiędzy-urządzeniami",[545,546,550],{"type":263,"value":264},{"type":258,"tag":266,"props":547,"children":548},{},[549],{"type":263,"value":270},{"type":263,"value":551}," wykonuje deduplikację na użytkownikach pomiędzy urządzeniami",{"type":258,"tag":259,"props":553,"children":554},{},[555],{"type":263,"value":556},"Dużą rewolucją w Google Analytics 4 w porównaniu do Google Analytics Universal jest możliwość połączenia danych pomiędzy platformami/urządzeniami. Implementując usługę Google Analytics 4 na naszej stronie internetowej oraz w aplikacji mobilnej jesteśmy w stanie uzyskać jedno przejrzyste źródło analiz dla tych platform.",{"type":258,"tag":259,"props":558,"children":559},{},[560],{"type":263,"value":561},"Domyślnie Google Analytics dla każdego urządzenia/przeglądarki generuje “user_pseudo_id”, czyli nowe ciasteczko (strona internetowa) lub identyfikator (aplikacja mobilna). Na podstawie tego identyfikatora wykonywane są obliczenia niezbędne do przedstawienia wszystkich metryk i wymiarów w panelu.\nJeden użytkownik może odwiedzić naszą stronę lub aplikację z różnych urządzeń. Jeżeli odwiedzi nas na stronie internetowej na komputerze, następnie na stronie internetowej na urządzeniu mobilnym, a na końcu w aplikacji mobilnej to będzie identyfikowany jako 3 różnych użytkowników.",{"type":258,"tag":259,"props":563,"children":564},{},[565,567,574,576,583,585],{"type":263,"value":566},"Jeżeli zdecydujemy się na włączenie usługi ",{"type":258,"tag":325,"props":568,"children":571},{"href":569,"rel":570},"https://support.google.com/analytics/answer/9445345?hl=pl&ref_topic=9303474#zippy=%2Ctematy-w-tym-artykule",[329],[572],{"type":263,"value":573},"Google Signals",{"type":263,"value":575}," lub implementację ",{"type":258,"tag":325,"props":577,"children":580},{"href":578,"rel":579},"https://support.google.com/analytics/answer/9213390?hl=pl",[329],[581],{"type":263,"value":582},"funkcji User ID",{"type":263,"value":584}," (np. własny identyfikator z bazy danych podczas logowania lub zakupu), Google Analytics przeprowadzi na Twoich danych deduplikację (na ile jest to możliwe w przypadku opcji Google Signals) , co wpłynie na liczbę użytkowników oraz atrybucję kanałów marketingowych. Dane możemy przeglądać na różnym poziomie (po deduplikacji lub bez deduplikacji) w zależności od naszych ustawień tożsamości w usłudze Google Analytics 4 - więcej o tym znajduje się tutaj: ",{"type":258,"tag":325,"props":586,"children":589},{"href":587,"rel":588},"https://support.google.com/analytics/answer/10976610?hl=pl",[329],[590],{"type":263,"value":591},"[GA4] Tożsamość raportowania - Analytics - Pomoc ",{"type":258,"tag":259,"props":593,"children":594},{},[595],{"type":258,"tag":413,"props":596,"children":599},{"alt":597,"src":598},"Google Analytics 4 User Identity","https://a.storyblok.com/f/46798/1036x468/248ad8555a/google-analytics-4-user-identity.png",[],{"type":258,"tag":259,"props":601,"children":602},{},[603,605],{"type":263,"value":604},"Warto jednak pamiętać, że dane Google Signals to dane, które Google potrafi połączyć z użytkownikami, którzy zalogowali się na swoje konta Google i mają włączoną personalizację reklam. Powiązanie tych danych z zalogowanymi użytkownikami umożliwia przedstawienie dokładniejszej liczby użytkowników w raportach. Ze względu na politykę prywatności użytkowników, firma Google nie może nam tych danych udostępnić, co wpływa również na rozbieżności w danych pomiędzy interfejsem, a raportach w Google BigQuery. Więcej o tym można poczytać tutaj: ",{"type":258,"tag":325,"props":606,"children":608},{"href":569,"rel":607},[329],[609],{"type":263,"value":610},"[GA4] Aktywacja Google Signals w usługach Google Analytics 4",{"type":258,"tag":259,"props":612,"children":613},{},[614],{"type":258,"tag":413,"props":615,"children":618},{"alt":616,"src":617},"Google Analytics 4 BigQuery Show More Users ","https://a.storyblok.com/f/46798/981x169/ee1df82f28/google-analytics-4-bigquery-export-show-more-users.png",[],{"type":258,"tag":259,"props":620,"children":621},{},[622],{"type":263,"value":623},"Warto pamiętać - jeżeli mamy zaimplementowany parametr user_id na swojej witrynie lub aplikacji, wciąż możemy starać się odtworzyć deduplikację użytkowników w BigQuery - tylko w ten sposób osiągniemy poprawną liczbę użytkowników oraz prawidłową atrybucję źródeł ruchu do sesji zgodnie z logikę “Cross-Device”.",{"type":258,"tag":259,"props":625,"children":626},{},[627,629],{"type":263,"value":628},"Z problemem deduplikacji oraz potencjalnym rozwiązaniem można zapoznać się w artykule ",{"type":258,"tag":325,"props":630,"children":633},{"href":631,"rel":632},"https://benjaminsky.medium.com/complex-deduplication-in-bigquery-a3c5e78dec2b",[329],[634],{"type":263,"value":635},"Complex Deduplication in BigQuery | by Benjamin Campbell ",{"type":258,"tag":299,"props":637,"children":639},{"id":638},"jeden-identyfikator-sesji-ga_session_id-może-zostać-przypisany-do-2-różnych-użytkowników",[640],{"type":263,"value":641},"Jeden identyfikator sesji (ga_session_id) może zostać przypisany do 2 różnych użytkowników",{"type":258,"tag":259,"props":643,"children":644},{},[645],{"type":263,"value":646},"W programowaniu intensywnie wykorzystuje się znaczniki czasu, czyli tzw. timestamp.\nDana ta pozwala określić moment, w którym zaszło określone zdarzenie.\nWartość takiego znacznika definiowana jest na podstawie “Unix Time”, czyli systemie reprezentacji czasu mierzącego liczbę sekund od początku 1970 roku.",{"type":258,"tag":259,"props":648,"children":649},{},[650],{"type":263,"value":651},"Dla przykładu Timestamp 1672481243 reprezentuje datę i godzinę: 2022-12-31 10:07:23\nJest to więc 1672481243 sekund od początku 1970 roku.",{"type":258,"tag":259,"props":653,"children":654},{},[655],{"type":263,"value":656},"Przeglądając dane Google Analytics 4 w BigQuery również mamy dużo kontaktu ze znacznikami czasu np. pole o nazwie event_timestamp zawiera liczbę mikrosekund od roku 1970.",{"type":258,"tag":259,"props":658,"children":659},{},[660],{"type":263,"value":661},"Kiedy przyjrzymy się identyfikatorowi o nazwie “ga_session_id” zobaczymy, że jest to przybliżony czas pierwszego zdarzenia rozpoczynającego sesje.",{"type":258,"tag":259,"props":663,"children":664},{},[665],{"type":258,"tag":413,"props":666,"children":669},{"alt":667,"src":668},"Google Analytics 4 GA Session ID Duplication","https://a.storyblok.com/f/46798/739x124/c1db345336/google-analytics-4-bigquery-ga_session_id.png",[],{"type":258,"tag":259,"props":671,"children":672},{},[673,675],{"type":263,"value":674},"W związku z tym, że kilku użytkowników może rozpocząć sesje w tym samym czasie (dokładnie w tej samej sekundzie), sam parametr tj. ga_session_id nie daje unikalnego identyfikatora sesji. W tym celu musimy połączyć user_pseudo_id czyli identyfikator użytkownika oraz ga_session_id, aby otrzymać unikalny identyfikator sesji do naszych obliczeń. Możemy to zrobić dzięki funkcji CONCAT.\n",{"type":258,"tag":676,"props":677,"children":678},"code",{},[679],{"type":263,"value":680},"\nSELECT\n   CONCAT(user_pseudo_id, ga_session_id) as session_id\nFROM\n   your_google_analytics_4_events\n",{"type":258,"tag":259,"props":682,"children":683},{},[684],{"type":263,"value":685},"Powstanie nam wtedy unikalny ciąg znaków oznaczający identyfikator danej sesji:",{"type":258,"tag":259,"props":687,"children":689},{"style":688},"text-align:center",[690,696],{"type":258,"tag":266,"props":691,"children":693},{"style":692},"color:green",[694],{"type":263,"value":695},"1020668977.1672354709",{"type":258,"tag":266,"props":697,"children":698},{"style":517},[699],{"type":263,"value":700},"1672354709",{"type":258,"tag":259,"props":702,"children":703},{},[704],{"type":263,"value":705},"Ciekawostka - jeżeli przyjrzymy się wartości user_pseudo_id i zobaczymy z czego jest ona złożona, również zauważymy w nim timestamp oznaczający datę utworzenia danego użytkownika.",{"type":258,"tag":259,"props":707,"children":708},{"style":688},[709,711,715],{"type":263,"value":710},"\n1020668977.",{"type":258,"tag":266,"props":712,"children":713},{"style":517},[714],{"type":263,"value":700},{"type":263,"value":716}," = {{random number}} + “.” + {{user created timestamp}}\n",{"type":258,"tag":299,"props":718,"children":720},{"id":719},"jeden-identyfikator-sesji-może-wystąpić-w-2-różnych-dniach",[721],{"type":263,"value":722},"Jeden identyfikator sesji może wystąpić w 2 różnych dniach",{"type":258,"tag":259,"props":724,"children":725},{},[726],{"type":263,"value":727},"Google Analytics Universal tworzył nową sesję za każdym razem, gdy:",{"type":258,"tag":317,"props":729,"children":730},{},[731,736,741],{"type":258,"tag":321,"props":732,"children":733},{},[734],{"type":263,"value":735},"nie było interakcji przez więcej niż 30 min (na podstawie domyślnych ustawień)",{"type":258,"tag":321,"props":737,"children":738},{},[739],{"type":263,"value":740},"w chwili, gdy zmieniały się parametry kampanii ( tj. utm, gclid, referral)",{"type":258,"tag":321,"props":742,"children":743},{},[744],{"type":258,"tag":745,"props":746,"children":747},"strong",{},[748],{"type":263,"value":749},"w chwili, gdy sesja odbywała pomiędzy jednym a drugim dniem",{"type":258,"tag":259,"props":751,"children":752},{},[753],{"type":263,"value":754},"Przykładowo, jeżeli mieliśmy sytuację, w której użytkownik rozpoczął sesję o godz. 23:58, a zakupu dokonał nie odchodząc od komputera o godz. 00:05 następnego dnia, to Google Analytics Universal tworzył w takim przypadku 2 różne identyfikatory sesji - pierwsza trwała od 23:58 do 00:00 a druga od 00:00 do 00:05(zakładając, że zamknął przeglądarkę zaraz po zakupie).",{"type":258,"tag":259,"props":756,"children":757},{},[758],{"type":263,"value":759},"W przypadku Google Analytics 4 identyfikator sesji pozostanie ten sam pomiędzy jednym a drugim dniem. W związku z tym jeżeli będzie nam zależeć na policzeniu dokładnych metryk dla danej sesji, musimy pamiętać, aby w trakcie analiz brać pod uwagę również dane z dnia poprzedniego np. w celu sprawdzenia strony wejścia/docelowej dla danej sesji. Wpływa to na wielkość procesowanych danych i konieczność stosowania dodatkowych modyfikacji w zapytaniach SQL.",{"type":258,"tag":299,"props":761,"children":763},{"id":762},"adres-url-strony-page_location-może-mieć-maksymalnie-1000-znaków",[764],{"type":263,"value":765},"Adres url strony (page_location) może mieć maksymalnie 1000 znaków",{"type":258,"tag":259,"props":767,"children":768},{},[769],{"type":258,"tag":266,"props":770,"children":771},{"style":517},[772],{"type":263,"value":773},"AKTUALIZACJA - ograniczenia limitu znaków dla parametru page_location zostały zmienione z 420 na 1000 znaków",{"type":258,"tag":259,"props":775,"children":776},{},[777],{"type":263,"value":778},"Jeżeli masz długie adresy url, wykorzystujące wiele parametrów to analiza tych danych w BigQuery może Cię zaskoczyć. Podczas jednego z projektów klient poprosił nas o analizę filtrów wybieranych przez użytkownika na podstawie parametrów znajdujących się w adresach url. Z optymizmem usiedliśmy do zadania, pisząc wyrażenia regularne pozwalające na ekstraktowanie parametrów z adresów url.\nPo krótkiej analizie, zauważyliśmy, że części parametrów nie ma lub często są ucinane w adresach url. Postanowiliśmy więc sprawdzić maksymalną długość adresów url i okazało się, że spora część ma zawsze 420 znaków - wszystkie te adresy miały ucięte parametry ze względu na długość.",{"type":258,"tag":259,"props":780,"children":781},{},[782],{"type":258,"tag":413,"props":783,"children":786},{"alt":784,"src":785},"Google Analytics 4 page_location max 420 characters","https://a.storyblok.com/f/46798/1020x110/421b49949a/google-analytics-4-page-location-max-420-characters.png",[],{"type":258,"tag":259,"props":788,"children":789},{},[790,792,798,800],{"type":263,"value":791},"Nasza rekomendacja: jeżeli wiemy, że dane parametry url będą dla nas bardzo istotne podczas analizy danych, powinniśmy je wtedy przekazać jako parametry zdarzenia. Pamiętajmy jednak, że page_location to parametr systemowy, który może mieć ",{"type":258,"tag":793,"props":794,"children":795},"s",{},[796],{"type":263,"value":797},"420",{"type":263,"value":799}," 1000 znaków. W przypadku niestandardowych parametrów limit znaków wynosi 100. Więcej o limitach można przeczytaj tutaj: ",{"type":258,"tag":325,"props":801,"children":804},{"href":802,"rel":803},"https://support.google.com/analytics/answer/9267744?hl=en",[329],[805],{"type":263,"value":806},"[GA4] Event collection limits - Analytics Help",{"type":258,"tag":299,"props":808,"children":810},{"id":809},"dane-bez-zgody-analitycznej-nie-zawierają-informacji-o-user_pseudo_id-i-ga_session_id",[811],{"type":263,"value":812},"Dane bez zgody analitycznej nie zawierają informacji o user_pseudo_id i ga_session_id",{"type":258,"tag":259,"props":814,"children":815},{},[816],{"type":263,"value":817},"Jeżeli mamy poprawnie zaimplementowaną funkcję consent mode od Google, dane mogą trafiać do Google Analytics w różnej postaci. Jeżeli użytkownik nie wyraził zgody na jego identyfikację poprzez cookie, jego zdarzenia będą wysyłane do Google BigQuery, ale parametry tj. user_pseudo_id oraz session_id będą miały wartość null. Jeżeli planujemy więc podczas analiz wykorzystywać te dane do łączenia lub innych obliczeń warto o tym pamiętać, gdyż wiele danych może nam się zgrupować do jednego nieistniejącego użytkownika lub do jednej nieistniejącej sesji.",{"type":258,"tag":259,"props":819,"children":820},{},[821],{"type":258,"tag":413,"props":822,"children":825},{"alt":823,"src":824},"Google Analytics 4 BigQuery Consent Mode Data","https://a.storyblok.com/f/46798/861x675/3ffd4a1a5a/google-analytics-4-bigquery-consent-mode.png",[],{"type":258,"tag":299,"props":827,"children":829},{"id":828},"w-chwili-gdy-nasze-transakcje-trafiają-do-google-analytics-w-różnych-walutach-musimy-zadbać-o-ich-przeliczenie",[830],{"type":263,"value":831},"W chwili, gdy nasze transakcje trafiają do Google Analytics w różnych walutach, musimy zadbać o ich przeliczenie",{"type":258,"tag":259,"props":833,"children":834},{},[835],{"type":263,"value":836},"Jeżeli na naszej stronie lub w aplikacji użytkownicy mogą dokonywać zakupów w różnych walutach, musimy zadbać o przekonwertowanie wartości do waluty, która została ustawiona w ustawieniach danej usługi.\nW przypadku przesyłania w implementacji parametru zdarzenia “currency”, Google Analytics 4 udostępnia nam dodatkowe pola, w których znajdują się automatycznie przekonwertowane dane do waluty USD. Niestety nie możemy nigdzie zdefiniować waluty, w której chcielibyśmy zrzucać dane do Google BigQuery. W związku z tym jeżeli mamy w swoich ustawieniach usługi wybraną walutę np. PLN, to w takim przypadku będziemy musieli ściągnąć do Google BigQuery informacje o kursie z danego dnia i samodzielnie przekonwertować te informację, aby móc odwzorować to co widzimy w panelu.",{"type":258,"tag":259,"props":838,"children":839},{},[840],{"type":258,"tag":413,"props":841,"children":844},{"alt":842,"src":843},"Google Analytics 4 BigQuery - Currency Conversion Value","https://a.storyblok.com/f/46798/952x188/e9b7084fe5/google-analytics-4-bigquer-currency-conversion.png",[],{"type":258,"tag":299,"props":846,"children":848},{"id":847},"brak-pełnych-informacji-o-pełnych-danych-google-ads-oraz-podatność-na-zmiany-nazw-kampanii",[849],{"type":263,"value":850},"Brak pełnych informacji o pełnych danych Google Ads oraz podatność na zmiany nazw kampanii",{"type":258,"tag":259,"props":852,"children":853},{},[854],{"type":263,"value":855},"W eksporcie danych Google Analytics Universal do BigQuery byliśmy przyzwyczajeni do bogatych informacji na temat kampanii Google Ads.",{"type":258,"tag":259,"props":857,"children":858},{},[859],{"type":258,"tag":413,"props":860,"children":863},{"alt":861,"src":862},"Google Analytics 4 BigQuery Missing Google Ads Data","https://a.storyblok.com/f/46798/718x575/99b5b1dfe4/google-analytics-4-bigquery-missing-google-ads-data.png",[],{"type":258,"tag":259,"props":865,"children":866},{},[867],{"type":263,"value":868},"Tak jak wcześniej wspomnieliśmy, w przypadku danych Google BigQuery mamy obliczone tylko 3 pola tj. traffic_source.source, traffic_source.medium oraz traffic_source.name i są to pola, które mówią o pozyskaniu użytkownika, a nie o źródłach danej sesji.\nW przypadku chęci wzbogacenia danych Google Analytics 4 o dodatkowe informacje z Google Ads między innymi identyfikator konta reklamowego, identyfikator kampanii, typ kampanii, musimy zadbać o zaciągnięcie tabel Google Ads do Google BigQuery, a dopiero w następnym kroku o połączenie ich za pomocą dodatkowych instrukcji SQL. Proces ten potrafi dosyć mocno rozbudowywać logikę zapytań, w związku z tym jest to kolejne utrudnienie, na które musimy być gotowi podczas eksploracji danych.",{"type":258,"tag":299,"props":870,"children":872},{"id":871},"podsumowanie",[873],{"type":263,"value":874},"Podsumowanie",{"type":258,"tag":259,"props":876,"children":877},{},[878],{"type":263,"value":879},"Google Analytics 4 i możliwość eksportu danych do Google BigQuery to świetne rozwiązanie, dla wszystkich firm, które chcą podejmować sprawne decyzje na podstawie danych. Jeżeli chcemy jednak w pełni wykorzystać ich potencjał i działać zgodnie z najnowszymi praktykami związanymi z mierzeniem ruchu pomiędzy urządzeniami musimy poświęcić sporo czasu na przeprocesowanie tych danych (deduplikacja użytkowników, atrybucja źródeł ruchu, łączenie danych Google Ads). Musimy być również gotowi na rozbieżności danych pomiędzy panelem Google Analytics 4, a tym co dostaniemy jako wynik w Google BigQUery.",{"type":258,"tag":259,"props":881,"children":882},{},[883,885,891],{"type":263,"value":884},"Na szczęście większość problemów związanych z procesowaniem danych da się zautomatyzować - o tym jak do tego podeszliśmy napisaliśmy kolejny artykuł ",{"type":258,"tag":325,"props":886,"children":888},{"href":350,"rel":887},[329],[889],{"type":263,"value":890},"“Google Analytics 4 BigQuery - sesje, atrybucja i gotowe dane do analiz”",{"type":263,"value":892},".",{"title":19,"searchDepth":274,"depth":274,"links":894},[895,897,899,900,902,903,904,905,906,907,908],{"id":301,"depth":274,"text":896},"Kontynuacja serii wpisów o danych Google Analytics 4 GA4 w BigQuery",{"id":370,"depth":274,"text":898},"Dane raportowane w Google BigQuery będą inne niż te, które widać w panelu Google Analytics 4 GA4",{"id":451,"depth":274,"text":454},{"id":543,"depth":274,"text":901},"Google Analytics 4 GA4 wykonuje deduplikację na użytkownikach pomiędzy urządzeniami",{"id":638,"depth":274,"text":641},{"id":719,"depth":274,"text":722},{"id":762,"depth":274,"text":765},{"id":809,"depth":274,"text":812},{"id":828,"depth":274,"text":831},{"id":847,"depth":274,"text":850},{"id":871,"depth":274,"text":874},1788963902571]