{"id":10474,"date":"2026-09-19T18:10:00","date_gmt":"2026-09-19T16:10:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10474"},"modified":"2026-10-26T13:15:43","modified_gmt":"2026-10-26T12:15:43","slug":"tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/","title":{"rendered":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w"},"content":{"rendered":"<p>Ma\u0142y wynik zapytania nie oznacza automatycznie ma\u0142ego rachunku BigQuery. Przy rozliczaniu zapyta\u0144 na \u017c\u0105danie liczy si\u0119 ilo\u015b\u0107 przetworzonych danych, a nie liczba zwr\u00f3conych wierszy. Wyb\u00f3r potrzebnych tabel dziennych i p\u00f3l mo\u017ce zatem da\u0107 wi\u0119ksz\u0105 oszcz\u0119dno\u015b\u0107 ni\u017c ograniczenie liczby wynik\u00f3w.<\/p>\n<p>Artyku\u0142 dotyczy zapyta\u0144 do eksportu GA4. Rozliczenie BigQuery oparte na mocy obliczeniowej zale\u017cy od tej mocy, zamiast od bezpo\u015bredniej op\u0142aty za bajty pojedynczego zapytania. Przechowywanie i przyjmowanie danych maj\u0105 odr\u0119bne zasady koszt\u00f3w. Przebieg pr\u00f3bny pomaga oszacowa\u0107 zapytanie, lecz nie gwarantuje dok\u0142adnej ko\u0144cowej op\u0142aty.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10474-review-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Sta\u0142y zakres sufiksu wybiera 31 z 90 przyk\u0142adowych tabel dziennych; sam filtr daty wiersza pozostawia wszystkie 90\"><figcaption>Przyk\u0142ad ze zgodnymi danymi dziennymi. Liczba tabel nie jest dok\u0142adnym stosunkiem koszt\u00f3w.<\/figcaption><\/figure>\n<h2>LIMIT nie jest niezawodnym ograniczeniem skanowania<\/h2>\n<p>Klastrowanie porz\u0105dkuje zapisane dane wed\u0142ug wybranych kolumn. Odpowiednie filtry mog\u0105 dzi\u0119ki temu pomija\u0107 niepotrzebne bloki danych. Dla tabeli bez klastrowania <code>SELECT * ... LIMIT 10<\/code> nie zmniejsza liczby bajt\u00f3w odczytanych z wybranych kolumn. Dziesi\u0119\u0107 wierszy wyniku mo\u017ce wymaga\u0107 du\u017cego skanu. Do pierwszego ogl\u0105du bez uruchamiania zapytania lepiej nadaje si\u0119 podgl\u0105d tabeli lub <code>bq head<\/code>.<\/p>\n<p>Istnieje wyj\u0105tek: w tabeli klastrowanej skan mo\u017ce czasem zako\u0144czy\u0107 si\u0119 po odczytaniu wystarczaj\u0105cej liczby blok\u00f3w. Nie czyni to z <code>LIMIT<\/code> og\u00f3lnego zabezpieczenia kosztowego. Sortowanie przez <code>ORDER BY<\/code> r\u00f3wnie\u017c wymaga oblicze\u0144 i nie jest automatycznie bezp\u0142atne, nawet przy niezmienionym zestawie kolumn wej\u015bciowych.<\/p>\n<h2>Wyb\u00f3r tabel i filtrowanie wierszy maj\u0105 r\u00f3\u017cne zadania<\/h2>\n<p>Dla <code>events_*<\/code> pole <code>_TABLE_SUFFIX<\/code> zawiera cz\u0119\u015b\u0107 nazwy po <code>events_<\/code>. Sta\u0142y zakres dat ogranicza skanowane tabele dzienne. Przyk\u0142ad wybiera sierpie\u0144 2026; nazwy projektu i zbioru danych s\u0105 symboliczne.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> event_date, event_name, user_pseudo_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project.analytics_12345.events_*`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> _TABLE_SUFFIX <span class=\"cbb-keyword\">BETWEEN<\/span> <span class=\"cbb-string\">'20260801'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-string\">'20260831'<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Zast\u0105pienie warunku przez <code>event_date BETWEEN '20260801' AND '20260831'<\/code> filtruje wiersze, ale samo nie ogranicza listy tabel dopasowanych przez wieloznacznik. Wyniki s\u0105 zgodne tylko dla oczekiwanych danych dziennych, bez dodatkowych dopasowanych \u017ar\u00f3de\u0142 wprowadzaj\u0105cych duplikaty lub inne wiersze. Zakres sufiksu wyklucza <code>intraday_...<\/code>; sam filtr daty zdarzenia tego nie zapewnia.<\/p>\n<p>Warunek sufiksu wyliczany dynamicznie z innej tabeli mo\u017ce nie ogranicza\u0107 skanowania. Filtr sufiksu nie pomija te\u017c wszystkich kontroli metadanych: niezgodny schemat albo widok dopasowany przez wieloznacznik mo\u017ce nadal powodowa\u0107 b\u0142\u0105d. Mo\u017cliwie w\u0105ska lista tabel i dostatecznie szczeg\u00f3\u0142owy prefiks upraszczaj\u0105 zapytanie. Dane strumieniowe bie\u017c\u0105cego dnia wymagaj\u0105 \u015bwiadomie oddzielnego wyboru.<\/p>\n<h2>Zagnie\u017cd\u017cone pola mo\u017cna wybiera\u0107 osobno<\/h2>\n<p><code>event_params<\/code> jest tablic\u0105 rekord\u00f3w z kluczem i polami warto\u015bci okre\u015blonych typ\u00f3w. Nie jest niepodzielnym blokiem, kt\u00f3ry trzeba odczyta\u0107 w ca\u0142o\u015bci przy ka\u017cdym parametrze. Przyk\u0142ad odwo\u0142uje si\u0119 do <code>key<\/code> i <code>value.string_value<\/code>, zamiast pobiera\u0107 wszystkie pola liczbowe i ca\u0142y rekord.<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> event_timestamp,\n<\/span><span class=\"cbb-line\">  (<span class=\"cbb-keyword\">SELECT<\/span> p.value.string_value\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params) <span class=\"cbb-keyword\">AS<\/span> p\n<\/span><span class=\"cbb-line\">   <span class=\"cbb-keyword\">WHERE<\/span> p.<span class=\"cbb-keyword\">key<\/span> = <span class=\"cbb-string\">'page_location'<\/span>) <span class=\"cbb-keyword\">AS<\/span> page_location\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project.analytics_12345.events_*`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> _TABLE_SUFFIX <span class=\"cbb-keyword\">BETWEEN<\/span> <span class=\"cbb-string\">'20260801'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-string\">'20260831'<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Podzapytanie zwraca najwy\u017cej jedn\u0105 warto\u015b\u0107 na zdarzenie. Dlatego zak\u0142ada najwy\u017cej jeden klucz <code>page_location<\/code> na zdarzenie. Brak klucza daje <code>NULL<\/code>; powt\u00f3rzone klucze powoduj\u0105 b\u0142\u0105d i wymagaj\u0105 jawnej regu\u0142y jako\u015bci lub wyboru. Filtrowanie klucza nie tworzy fizycznie odr\u0119bnej kolumny <code>page_location<\/code>: potrzebne pola kluczy i warto\u015bci tekstowych nadal trzeba sprawdzi\u0107.<\/p>\n<p>Jawny wyb\u00f3r dotyczy tak\u017ce <code>device<\/code>, <code>geo<\/code>, <code>items<\/code> i <code>user_properties<\/code>. Te pola mog\u0105 by\u0107 niezb\u0119dne do analizy. W\u0142a\u015bciw\u0105 zasad\u0105 jest wyb\u00f3r potrzebnych p\u00f3l, a nie og\u00f3lne odrzucanie ca\u0142ych struktur. Filtry, z\u0142\u0105czenia i sortowanie mog\u0105 wymaga\u0107 r\u00f3wnie\u017c p\u00f3l spoza ko\u0144cowej listy wynikowej.<\/p>\n<h2>Bezp\u0142atne oszacowanie zamiast dok\u0142adnego rachunku<\/h2>\n<p>Edytor sprawdza SQL i szacuje liczb\u0119 przetworzonych bajt\u00f3w. Odpowiednik wiersza polece\u0144 dzia\u0142a bez wykonywania zapytania:<\/p>\n<figure style=\"--cbb-digits:1\" class=\"cbb cbb--wrap wp-block-code-beautifier-block-code\" data-lang=\"plain\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Text<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-plain\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\">bq query --use_legacy_sql=false --dry_run &lt; query.sql<\/span><\/code><\/pre><\/figure>\n<p>Plik <code>query.sql<\/code> zawiera pe\u0142ne zapytanie z rzeczywistym projektem, zbiorem i datami. \u017badna sta\u0142a liczba bajt\u00f3w nie pasuje do ka\u017cdej us\u0142ugi GA4. Przy tabelach klastrowanych oszacowanie mo\u017ce przekracza\u0107 ko\u0144cowy skan, poniewa\u017c pomijane bloki s\u0105 ustalane podczas wykonania. Udany przebieg pr\u00f3bny nie gwarantuje udanego wykonania; skrypty i dynamiczny SQL maj\u0105 dodatkowe ograniczenia walidacji.<\/p>\n<p>Rzeczywista op\u0142ata na \u017c\u0105danie zale\u017cy tak\u017ce od taryfy, bezp\u0142atnego limitu, zaokr\u0105glenia i minimalnej rozliczanej ilo\u015bci danych. BigQuery podaje minimum 10 MB na przywo\u0142an\u0105 tabel\u0119 i na zapytanie. Trafienie w pami\u0119ci podr\u0119cznej wynik\u00f3w mo\u017ce unikn\u0105\u0107 op\u0142aty za zapytanie, lecz zapytania do wielu tabel przez wieloznacznik nie obs\u0142uguj\u0105 takiej pami\u0119ci. Kosztu mocy opartej na slotach nie da si\u0119 dok\u0142adnie wyliczy\u0107 z oszacowania bajt\u00f3w.<\/p>\n<h2>Klastrowanie i tabela wynikowa wielokrotnego u\u017cytku<\/h2>\n<p>Tabela zawieraj\u0105ca tylko potrzebne pola i podsumowania mo\u017ce ograniczy\u0107 powtarzan\u0105 prac\u0119, gdy wiele raport\u00f3w korzysta z tych samych p\u00f3l lub agregat\u00f3w. Oszcz\u0119dno\u015b\u0107 musi uzasadnia\u0107 koszty od\u015bwie\u017cania i przechowywania; nie istnieje uniwersalny pr\u00f3g trzech r\u0119cznych uruchomie\u0144. Przyk\u0142ad tworzy pust\u0105 tabel\u0119 na liczby zdarze\u0144 grupowane wed\u0142ug daty, nazwy zdarzenia i pseudonimowego identyfikatora. Nie wstawia danych ani nie oblicza liczby u\u017cytkownik\u00f3w lub sesji.<\/p>\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"sql\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">SQL<\/span><span class=\"cbb-actions\"><button type=\"button\" class=\"cbb-button cbb-button--wrap\" data-cbb-action=\"wrap\" aria-pressed=\"true\" title=\"Wrap long lines\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><path d=\"M2 4h12M2 8h9.5a2.5 2.5 0 0 1 0 5H8m0 0 1.5-1.5M8 13l1.5 1.5M2 12h3\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><span class=\"cbb-sr\">Wrap long lines<\/span><\/button><button type=\"button\" class=\"cbb-button cbb-button--copy\" data-cbb-action=\"copy\" data-cbb-done=\"Copied\" data-cbb-failed=\"Press Ctrl+C to copy\"><svg aria-hidden=\"true\" focusable=\"false\" width=\"16\" height=\"16\" viewBox=\"0 0 16 16\"><rect x=\"5.5\" y=\"5.5\" width=\"8\" height=\"8.5\" rx=\"1.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><path d=\"M10.5 3.5V3A1.5 1.5 0 0 0 9 1.5H4A1.5 1.5 0 0 0 2.5 3v6.5A1.5 1.5 0 0 0 4 11h.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"\/><\/svg><span class=\"cbb-button-label\" aria-live=\"polite\">Copy<\/span><\/button><\/span><\/figcaption><pre class=\"cbb-pre\" tabindex=\"0\"><code class=\"cbb-code language-sql\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">CREATE<\/span> <span class=\"cbb-keyword\">TABLE<\/span> <span class=\"cbb-keyword\">IF<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-keyword\">EXISTS<\/span> <span class=\"cbb-variable\">`project.analytics_12345.daily_user_metrics`<\/span>\n<\/span><span class=\"cbb-line\">(\n<\/span><span class=\"cbb-line\">  event_date <span class=\"cbb-type\">DATE<\/span>,\n<\/span><span class=\"cbb-line\">  event_name <span class=\"cbb-type\">STRING<\/span>,\n<\/span><span class=\"cbb-line\">  user_pseudo_id <span class=\"cbb-type\">STRING<\/span>,\n<\/span><span class=\"cbb-line\">  total_events <span class=\"cbb-type\">INT64<\/span>\n<\/span><span class=\"cbb-line\">)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">PARTITION<\/span> <span class=\"cbb-keyword\">BY<\/span> event_date\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">CLUSTER<\/span> <span class=\"cbb-keyword\">BY<\/span> event_name, user_pseudo_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-function\">OPTIONS<\/span> (require_partition_filter = <span class=\"cbb-constant\">TRUE<\/span>);<\/span><\/code><\/pre><\/figure>\n<p>Wype\u0142nienie tabeli wymaga zamiany eksportowanego tekstu <code>event_date<\/code> na dat\u0119 przez <code>PARSE_DATE('%Y%m%d', event_date)<\/code> oraz grupowania wed\u0142ug daty, nazwy zdarzenia i identyfikatora w celu obliczenia <code>total_events<\/code>.<\/p>\n<p>Zbi\u00f3r danych musi istnie\u0107 w odpowiedniej lokalizacji. <code>IF NOT EXISTS<\/code> nie naprawia istniej\u0105cej tabeli o innym schemacie lub klastrowaniu. Partycje dziel\u0105 tabel\u0119 na cz\u0119\u015bci wed\u0142ug daty. Opcja filtra partycji wymaga w kolejnych zapytaniach odpowiedniego warunku dotycz\u0105cego tej daty; zbyt szeroki zakres nadal mo\u017ce odczyta\u0107 du\u017co danych.<\/p>\n<p>Klastrowanie mo\u017ce pomija\u0107 bloki dla odpowiednich filtr\u00f3w. Obs\u0142ugiwane s\u0105 maksymalnie cztery kolumny klastrowania, a kolejno\u015b\u0107 ma znaczenie. <code>event_name<\/code> na pocz\u0105tku odpowiada cz\u0119stym filtrom po tym polu; zapytania wy\u0142\u0105cznie po identyfikatorze mog\u0105 wymaga\u0107 innej kolejno\u015bci. Ma\u0142e tabele lub ma\u0142e partycje dzienne mog\u0105 zyska\u0107 niewiele. Potrzebne s\u0105 pomiary z rzeczywistymi raportami.<\/p>\n<div class=\"lw-faq\"><h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy drogie zapytanie mo\u017ce zosta\u0107 odrzucone przed wykonaniem?<\/h3>\n<p>Dla zapyta\u0144 rozliczanych na \u017c\u0105danie <code>--maximum_bytes_billed<\/code> ustawia granic\u0119 szacowanych rozliczanych bajt\u00f3w na zapytanie. Wy\u017csze oszacowanie powoduje odrzucenie bez wykonania. Zapytanie do tabeli klastrowanej mo\u017ce zosta\u0107 odrzucone tak\u017ce wtedy, gdy ko\u0144cowy skan by\u0142by mniejszy. Dzienne limity projektu i u\u017cytkownika uzupe\u0142niaj\u0105 kontrol\u0119, lecz Google opisuje limity niestandardowe jako przybli\u017cone, a nie absolutn\u0105 gwarancj\u0119 wydatk\u00f3w.<\/p>\n<h3>Jak p\u00f3\u017ane uzupe\u0142nienia GA4 trafiaj\u0105 do tabeli wynikowej?<\/h3>\n<p>GA4 mo\u017ce aktualizowa\u0107 tabele dzienne do trzech dni po dacie zdarzenia. Dzienny proces mo\u017ce odbudowywa\u0107 cztery zako\u0144czone daty przed bie\u017c\u0105c\u0105 dat\u0105 w strefie czasowej us\u0142ugi. Najstarszy dzie\u0144 zostaje wtedy ponownie odczytany po pe\u0142nym trzydniowym oknie aktualizacji. To nie jest samo dopisywanie wczoraj ani liczenie dzisiaj jako jednego z czterech dni.<\/p>\n<p>Przed zast\u0105pieniem wynik\u00f3w proces musi sprawdzi\u0107 dost\u0119pno\u015b\u0107 wszystkich oczekiwanych tabel \u017ar\u00f3d\u0142owych i pomy\u015blnie odczyta\u0107 dane zast\u0119pcze. Brak tabeli nie dowodzi zera zdarze\u0144. Tabela po\u015brednia przechowuje dane zast\u0119pcze przed zmian\u0105 tabeli docelowej. Transakcja zatwierdza usuni\u0119cie i wstawienie razem albo, w razie b\u0142\u0119du, nie zachowuje \u017cadnej z tych zmian. Tabela po\u015brednia, a nast\u0119pnie transakcja obejmuj\u0105ca <code>DELETE<\/code> i <code>INSERT<\/code> dla wybranego okresu zapobiega pozostawieniu pustego celu po b\u0142\u0119dzie wstawiania. Odpowiednio ograniczony <code>MERGE<\/code> r\u00f3wnie\u017c potrzebuje regu\u0142y dla wierszy docelowych, kt\u00f3re znikn\u0119\u0142y ze \u017ar\u00f3d\u0142a.<\/p>\n<p>Istnienie tabeli nie dowodzi kompletno\u015bci eksportu. Op\u00f3\u017anienia eksportu, historyczne poprawki i usuni\u0119cia wymagaj\u0105 monitorowania oraz naprawy poza ruchomym oknem. Od\u015bwie\u017cenia nie powinny te\u017c wykonywa\u0107 si\u0119 r\u00f3wnolegle. Partycjonowanie ani filtr sufiksu nie zapewniaj\u0105 automatycznie tych kontroli poprawno\u015bci.<\/p><\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/cloud.google.com\/bigquery\/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">Cennik BigQuery<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">Dokumentacja programistyczna Google Analytics 4<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/clustered-tables\" target=\"_blank\" rel=\"noopener noreferrer\">Wprowadzenie do tabel klastrowanych<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-costs\" target=\"_blank\" rel=\"noopener noreferrer\">Google: szacowanie i kontrola koszt\u00f3w<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/querying-wildcard-tables\" target=\"_blank\" rel=\"noopener noreferrer\">Google: zapytania do tabel z wieloznacznikiem<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google: schemat eksportu GA4 do BigQuery<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-performance-nested\" target=\"_blank\" rel=\"noopener noreferrer\">Google: pola zagnie\u017cd\u017cone i powtarzane<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-performance-compute\" target=\"_blank\" rel=\"noopener noreferrer\">Google: obliczenia w zapytaniach<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/custom-quotas\" target=\"_blank\" rel=\"noopener noreferrer\">Google: w\u0142asne limity zapyta\u0144<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/multi-statement-queries\" target=\"_blank\" rel=\"noopener noreferrer\">Google: zapytania z wieloma instrukcjami<\/a><\/li><\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Koszty zapyta\u0144 na \u017c\u0105danie zale\u017c\u0105 od skanowanych danych, nie od liczby wynik\u00f3w. Sta\u0142e filtry sufiksu i wyb\u00f3r p\u00f3l mog\u0105 ograniczy\u0107 skan; bezp\u0142atny przebieg pr\u00f3bny daje oszacowanie, a nie gwarancj\u0119 ko\u0144cowej op\u0142aty.<\/p>\n","protected":false},"author":1,"featured_media":30793,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[92084,92100],"class_list":["post-10474","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-pl","tag-bigquery-pl","tag-google-analytics-4-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-19T16:10:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T12:15:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"7 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w\",\"datePublished\":\"2026-09-19T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:15:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/\"},\"wordCount\":1228,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10474.png\",\"keywords\":[\"BigQuery\",\"Google Analytics 4\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/\",\"name\":\"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10474.png\",\"datePublished\":\"2026-09-19T16:10:00+00:00\",\"dateModified\":\"2026-10-26T12:15:43+00:00\",\"description\":\"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10474.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10474.png\",\"width\":1200,\"height\":630,\"caption\":\"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\",\"name\":\"Lukas Wojcik - Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\",\"name\":\"Lukas Wojcik\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\",\"width\":424,\"height\":636,\"caption\":\"Lukas Wojcik\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik","description":"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/","og_locale":"en_US","og_type":"article","og_title":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik","og_description":"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-19T16:10:00+00:00","article_modified_time":"2026-10-26T12:15:43+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"7 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w","datePublished":"2026-09-19T16:10:00+00:00","dateModified":"2026-10-26T12:15:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/"},"wordCount":1228,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png","keywords":["BigQuery","Google Analytics 4"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/","name":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png","datePublished":"2026-09-19T16:10:00+00:00","dateModified":"2026-10-26T12:15:43+00:00","description":"Dlaczego LIMIT nie potania zapytania, dlaczego event_date nie przycina tabel i jak darmowy przebieg pr\u00f3bny dok\u0142adnie odpowiada na pytanie o koszt.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10474.png","width":1200,"height":630,"caption":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/tansze-zapytania-o-dane-ga4-w-bigquery-kontrola-ilosci-danych-i-szacowanie-kosztow\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Ta\u0144sze zapytania o dane GA4 w BigQuery: kontrola ilo\u015bci danych i szacowanie koszt\u00f3w"}]},{"@type":"WebSite","@id":"https:\/\/www.lukaswojcik.com\/blog\/#website","url":"https:\/\/www.lukaswojcik.com\/blog\/","name":"Lukas Wojcik - Blog","description":"","publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.lukaswojcik.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":["Person","Organization"],"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9","name":"Lukas Wojcik","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg","width":424,"height":636,"caption":"Lukas Wojcik"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"]}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10474","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/comments?post=10474"}],"version-history":[{"count":7,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10474\/revisions"}],"predecessor-version":[{"id":27287,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10474\/revisions\/27287"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30793"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10474"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10474"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10474"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}