{"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-09-09T17:10:04","modified_gmt":"2026-09-09T15:10:04","slug":"koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/","title":{"rendered":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run"},"content":{"rendered":"<p>Eksport GA4 rozlicza si\u0119 po bajtach, a liczba bajt\u00f3w nie ma z odpowiedzi\u0105 prawie nic wsp\u00f3lnego. Zapytanie zwracaj\u0105ce czterdzie\u015bci wierszy i zapytanie zwracaj\u0105ce cztery miliony mog\u0105 odczyta\u0107 dok\u0142adnie tyle samo &#8211; bo rozlicza si\u0119 to, co trzeba by\u0142o po drodze otworzy\u0107, a nie to, co na ko\u0144cu wr\u00f3ci\u0142o.<\/p>\n<p>Rozstrzygaj\u0105 dwa szczeg\u00f3\u0142y: ile tabel dziennych trzeba otworzy\u0107 i ile kolumn w nich odczyta\u0107. Jedno i drugie jest przes\u0105dzone, zanim powstanie cho\u0107 jeden wiersz, i jedno i drugie da si\u0119 wcze\u015bniej odczyta\u0107.<\/p>\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/partitionen-lesen-pl.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Dziewi\u0119\u0107dziesi\u0105t kafelk\u00f3w dla dziewi\u0119\u0107dziesi\u0119ciu tabel dziennych: przy filtrze _TABLE_SUFFIX \u015bwieci trzydzie\u015bci jeden, przy filtrze event_date wszystkie dziewi\u0119\u0107dziesi\u0105t\"><figcaption>Ten sam miesi\u0105c, te same wiersze, ten sam wynik. Inaczej zapisany jest tylko filtr.<\/figcaption><\/figure>\n<h2>P\u0142aci si\u0119 za czytanie, nie za zwracanie<\/h2>\n<p>Najdro\u017csze nieporozumienie w tym obszarze nazywa si\u0119 <code>LIMIT<\/code>. Ograniczenie dzia\u0142a po odczytaniu danych; przycina zbi\u00f3r wynik\u00f3w i nie zmienia kosztu o nic. To samo dotyczy <code>ORDER BY<\/code> i wszystkiego innego, co dzieje si\u0119, gdy wiersze ju\u017c s\u0105.<\/p>\n<p>Tym samym nawyk przegl\u0105dania przez <code>SELECT * ... LIMIT 10<\/code> &#8211; rozs\u0105dny w niemal ka\u017cdej innej bazie &#8211; jest najdro\u017cszym sposobem obejrzenia eksportu GA4. Dziesi\u0119\u0107 wierszy z ka\u017cdej kolumny po ka\u017cdej tabeli wieloznacznika to pe\u0142ny przebieg z ma\u0142ym okienkiem na ko\u0144cu.<\/p>\n<h2>Dlaczego event_date niczego nie przycina<\/h2>\n<p>Tabele dzienne adresuje si\u0119 wieloznacznikiem, a <code>_TABLE_SUFFIX<\/code> to ta cz\u0119\u015b\u0107 nazwy tabeli, kt\u00f3ra po nim nast\u0119puje. Filtrowanie po nim wybiera tabele, a wyb\u00f3r nast\u0119puje przed czytaniem &#8211; reszty maszyna po prostu nigdy nie otwiera.<\/p>\n<p><code>event_date<\/code> wygl\u0105da, jakby robi\u0142o to samo, a robi co\u015b przeciwnego. Jest kolumn\u0105 w ka\u017cdej tabeli; \u017ceby stwierdzi\u0107, czy tabela zawiera pasuj\u0105ce wiersze, trzeba j\u0105 otworzy\u0107 i t\u0119 kolumn\u0119 odczyta\u0107. Filtr dzia\u0142a poprawnie, wynik jest identyczny, a rachunek obejmuje ca\u0142y wieloznacznik.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code># przycina: sufiks jest cz&#281;&#347;ci&#261; nazwy\nWHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260831'\n\n# nie przycina: kolumna le&#380;y wewn&#261;trz tabel\nWHERE event_date BETWEEN '20260801' AND '20260831'\n\n# oba zwracaj&#261; te same wiersze<\/code><\/pre>\n<p>Ta sama logika t\u0142umaczy, dlaczego wieloznacznik trafia r\u00f3wnie\u017c <code>events_intraday_*<\/code> i dlaczego filtr sufiksu je wyklucza: <code>intraday_<\/code> sortuje si\u0119 za ka\u017cd\u0105 o\u015bmiocyfrow\u0105 dat\u0105, wi\u0119c zakres ko\u0144cz\u0105cy si\u0119 dat\u0105 zostawia je na zewn\u0105trz. To skutek uboczny, kt\u00f3ry warto zna\u0107, a nie na nim polega\u0107 &#8211; bie\u017c\u0105cy dzie\u0144 odpytuje si\u0119 z tabeli intraday celowo i osobno.<\/p>\n<h2>Kolumny to druga d\u017awignia<\/h2>\n<p>Wewn\u0105trz tabel, kt\u00f3re faktycznie zostaj\u0105 otwarte, kosztem jest suma wymienionych kolumn. Tu zaczyna mie\u0107 znaczenie budowa eksportu: <code>event_params<\/code> to jedna zagnie\u017cd\u017cona kolumna, w kt\u00f3rej le\u017cy ka\u017cdy parametr ka\u017cdego zdarzenia, a zapytanie wyci\u0105gaj\u0105ce z niej pojedynczy parametr czyta ca\u0142\u0105 kolumn\u0119.<\/p>\n<p>Odczytanie z tej tablicy samego <code>page_location<\/code> nie jest mo\u017cliwe. Nie przemawia to przeciw jej u\u017cyciu &#8211; przemawia za wymienianiem kolumn wprost zamiast si\u0119gania po <code>SELECT *<\/code>, bo naprawd\u0119 du\u017ce kolumny to dok\u0142adnie te, kt\u00f3rych nikt nie potrzebuje: <code>user_properties<\/code>, <code>items<\/code>, <code>collected_traffic_source<\/code> oraz struktury urz\u0105dzenia i geolokalizacji.<\/p>\n<h2>Co faktycznie zmienia ka\u017cde dzia\u0142anie<\/h2>\n<table style=\"width:100%;border-collapse:collapse\">\n<thead>\n<tr>\n<th style=\"vertical-align:top\">Dzia\u0142anie<\/th>\n<th>Wp\u0142yw na odczytane bajty<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\"><code>_TABLE_SUFFIX<\/code> zamiast <code>event_date<\/code><\/td>\n<td>z ka\u017cdej tabeli zbioru do tych z zakresu<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">wymienianie kolumn zamiast <code>SELECT *<\/code><\/td>\n<td>proporcjonalnie &#8211; cz\u0119sto najwi\u0119ksza pojedyncza oszcz\u0119dno\u015b\u0107<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\"><code>LIMIT 100<\/code><\/td>\n<td>\u017caden<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">filtr po parametrze zdarzenia<\/td>\n<td>\u017caden &#8211; <code>event_params<\/code> i tak czyta si\u0119 w ca\u0142o\u015bci<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">filtr po <code>event_name<\/code><\/td>\n<td>zale\u017cy od klastrowania tabel &#8211; powie to przebieg pr\u00f3bny<\/td>\n<\/tr>\n<tr>\n<td style=\"white-space:nowrap;vertical-align:top\">w\u0105ska tabela zapisywana raz dziennie<\/td>\n<td>u\u0142amek, trwale, dla ka\u017cdego kolejnego zapytania<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Wiersz o klastrowaniu celowo pozostaje tu bez odpowiedzi. To, czy filtr po <code>event_name<\/code> oszcz\u0119dza bajty, zale\u017cy od zbioru, a snucie domys\u0142\u00f3w jest zb\u0119dne, gdy dok\u0142adna odpowied\u017a le\u017cy o jedno naci\u015bni\u0119cie klawisza dalej.<\/p>\n<h2>Przebieg pr\u00f3bny jest darmowy i dok\u0142adny<\/h2>\n<p>BigQuery wylicza oszacowanie bajt\u00f3w z metadanych tabel, nie wykonuj\u0105c niczego &#8211; jest wi\u0119c darmowe i dok\u0142adne. Edytor pokazuje je w rogu przed wys\u0142aniem zapytania; w wierszu polece\u0144 to samo dost\u0119pne jest jako prze\u0142\u0105cznik.<\/p>\n<pre class=\"wp-block-kevinbatdorf-code-block-pro\"><code>bq query --use_legacy_sql=false --dry_run 'SELECT ...'\n\nQuery successfully validated.\nAssuming the tables are not modified,\nthis query will process 41 203 847 552 bytes of data.<\/code><\/pre>\n<p>Czterdzie\u015bci jeden gigabajt\u00f3w to liczba, o kt\u00f3rej da si\u0119 zdecydowa\u0107. Uruchomienie zapytania najpierw i dowiedzenie si\u0119 potem to ta sama informacja w gorszym momencie, a mi\u0119dzy tymi nawykami le\u017cy jeden wiersz przed instrukcj\u0105.<\/p>\n<h2>Co si\u0119 powtarza, nale\u017cy do w\u0105skiej tabeli<\/h2>\n<p>Ostatnia d\u017awignia jest budowlana, a nie j\u0119zykowa. Analiza uruchamiana ka\u017cdego ranka na dziewi\u0119\u0107dziesi\u0119ciu dniach czyta na nowo osiemdziesi\u0105t dziewi\u0119\u0107 dni, kt\u00f3re od wczoraj si\u0119 nie zmieni\u0142y.<\/p>\n<p>Zaplanowane zapytanie zapisuj\u0105ce raz dziennie tych kilka faktycznie u\u017cywanych p\u00f3l do w\u0142asnej tabeli zamienia to w: odczyta\u0107 jeden dzie\u0144, a potem odpytywa\u0107 co\u015b ma\u0142ego. Dzienny przebieg kosztuje tyle, ile kosztuje jeden dzie\u0144; wszystko dalsze kosztuje u\u0142amek dotychczasowego. To ta sama sztuczka co widok zmaterializowany i op\u0142aca si\u0119, gdy tylko zapytanie zosta\u0142o uruchomione r\u0119cznie trzy razy.<\/p>\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\">BigQuery pricing<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics 4 developer guide<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>BigQuery rozlicza odczytane bajty, a nie zwr\u00f3cone wiersze. Kt\u00f3re tabele zostan\u0105 otwarte i kt\u00f3rych kolumn dotknie zapytanie, rozstrzygaj\u0105 dwa szczeg\u00f3\u0142y &#8211; i oba s\u0105 znane przed wys\u0142aniem.<\/p>\n","protected":false},"author":1,"featured_media":15184,"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>Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog<\/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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog\" \/>\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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/\" \/>\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=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.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=\"4 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\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run\",\"datePublished\":\"2026-09-19T16:10:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/\"},\"wordCount\":783,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.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\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/\",\"name\":\"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png\",\"datePublished\":\"2026-09-19T16:10:00+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\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png\",\"width\":1200,\"height\":630,\"caption\":\"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run\"}]},{\"@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":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog","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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/","og_locale":"en_US","og_type":"article","og_title":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog","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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-19T16:10:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run","datePublished":"2026-09-19T16:10:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/"},"wordCount":783,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/","name":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png","datePublished":"2026-09-19T16:10:00+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\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-10474-ile-kosztuje-zapytanie-zanim-ruszy-n.png","width":1200,"height":630,"caption":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/koszty-bigquery-przy-eksporcie-ga4-ktore-tabele-i-kolumny-czyta-zapytanie\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Koszty BigQuery przy eksporcie GA4: kt\u00f3re tabele i kolumny czyta zapytanie oraz bezp\u0142atny dry run"}]},{"@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":3,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10474\/revisions"}],"predecessor-version":[{"id":16869,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10474\/revisions\/16869"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15184"}],"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}]}}