{"id":8822,"date":"2026-08-15T13:37:00","date_gmt":"2026-08-15T11:37:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=8820"},"modified":"2026-08-13T14:29:53","modified_gmt":"2026-08-13T12:29:53","slug":"ga4-bigquery-cost-optimization-stopping-budget-burn","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/","title":{"rendered":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports"},"content":{"rendered":"\r\n<h2 class=\"wp-block-heading\">GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Working with the native Google Analytics 4 (GA4) event export in Google Cloud BigQuery provides unmatched analytical flexibility. However, unoptimized queries against raw event tables can rapidly inflate cloud infrastructure bills. Since BigQuery charges based on the amount of data processed during query execution, understanding the underlying columnar storage architecture is critical for sustainable data engineering.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">1. The Architectural Pitfall of SELECT * on events_* Tables<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">BigQuery separates query execution from storage: Dremel is the distributed query engine, while the data itself is held in Capacitor, BigQuery&#039;s columnar storage format. In a traditional row-oriented database, querying a single row reads the entire record. In a columnar database, each column is stored individually across distributed storage blocks. Therefore, query costs depend entirely on the total data volume of the specific columns referenced in the query.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Executing a generic <code>SELECT * FROM `project.analytics_12345.events_*`<\/code> forces the engine to read every single column across all available shards\u2014including massive nested RECORD arrays such as <code>event_params<\/code>, <code>user_properties<\/code>, and <code>items<\/code>. A single query across several months of raw data can easily scan terabytes, generating substantial unnecessary costs.<\/p>\r\n\r\n\r\n\r\n<figure class=\"lw-diagram\">\n<img loading=\"lazy\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-bqkosten-en.png\" width=\"1120\" height=\"700\" decoding=\"async\"\n     alt=\"Three descending steps from a raw wildcard query through a restricted query to a pre-aggregated table, with the three cost drivers below\">\n<figcaption>Each step cuts what the query has to read: first the time window and the columns, then the raw table itself, which the dashboard stops touching altogether.<\/figcaption>\n<\/figure>\n\n<h2 class=\"wp-block-heading\">2. Date Partitioning and Table Suffix Filtering<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">GA4 exports data into sharded tables formatted as <code>events_YYYYMMDD<\/code>. The primary mechanism to reduce scanned bytes is strict date partitioning via the <code>_TABLE_SUFFIX<\/code> pseudo-column. Without this filter, BigQuery reads the entire history of the dataset before applying WHERE clauses.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>-- HIGH COST (Scans entire dataset history):\r\nSELECT event_name, user_pseudo_id \r\nFROM `project.analytics_12345.events_*`\r\nWHERE event_name = 'purchase';\r\n\r\n-- OPTIMIZED (Restricts scan to a specific 7-day window):\r\nSELECT event_name, user_pseudo_id \r\nFROM `project.analytics_12345.events_*`\r\nWHERE _TABLE_SUFFIX BETWEEN '20260801' AND '20260807'\r\n  AND event_name = 'purchase';<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">3. Clustering by event_name and user_pseudo_id<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">While partitioning filters data at the table-shard level, clustering sorts storage blocks internally based on specific column values. When custom analytics pipelines frequently filter by event types or user identifiers, applying clustering to downstream staging tables dramatically reduces execution overhead.<\/p>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">When a query filters by a clustered column, BigQuery skips scanning irrelevant storage blocks automatically. For analytical workloads, ordering clustering keys by cardinality\u2014starting with <code>event_name<\/code> followed by <code>user_pseudo_id<\/code>\u2014delivers maximum scanning efficiency.<\/p>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">4. Building Intermediate Tables with Incremental Scheduled Queries<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Repetitively querying raw nested GA4 tables for dashboards or reporting tools is highly inefficient. Best practices dictate implementing an ETL (Extract, Transform, Load) workflow using <strong>Incremental Scheduled Queries<\/strong>. By processing only the most recent day&#8217;s data and appending it to a flat, clustered summary table, historical scan costs are reduced by up to 95%.<\/p>\r\n\r\n\r\n\r\n<pre class=\"wp-block-code\"><code>-- One-off setup: create the target table (run once)\r\nCREATE TABLE IF NOT EXISTS `project.analytics_12345.daily_user_metrics`\r\n(\r\n  event_date DATE,\r\n  event_name STRING,\r\n  user_pseudo_id STRING,\r\n  total_events INT64,\r\n  sessions INT64\r\n)\r\nPARTITION BY event_date\r\nCLUSTER BY event_name, user_pseudo_id;\r\n\r\n-- Daily incremental aggregation query (the scheduled job)\r\nDELETE FROM `project.analytics_12345.daily_user_metrics`\r\nWHERE event_date = DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY);\r\n\r\nINSERT INTO `project.analytics_12345.daily_user_metrics`\r\nSELECT\r\n  PARSE_DATE('%Y%m%d', event_date) AS event_date,\r\n  event_name,\r\n  user_pseudo_id,\r\n  COUNT(1) AS total_events,\r\n  COUNT(DISTINCT (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id')) AS sessions\r\nFROM `project.analytics_12345.events_*`\r\nWHERE _TABLE_SUFFIX = FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))\r\nGROUP BY 1, 2, 3;<\/code><\/pre>\r\n\r\n\r\n\r\n<h2 class=\"wp-block-heading\">Summary<\/h2>\r\n\r\n\r\n\r\n<p class=\"wp-block-paragraph\">Cost-effective GA4 BigQuery architecture relies on three foundational rules: eliminating explicit wildcard column selections, restricting scanning boundaries through strict <code>_TABLE_SUFFIX<\/code> rules, and offloading heavy reporting workloads to flattened, clustered intermediate tables populated via daily scheduled runs.<\/p>\r\n\n\n<div class=\"lw-quellen\">\n<h2>Sources<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery documentation<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/bigquery\/basic-queries\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery Export schema for GA4<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Technical guide on optimizing GA4 BigQuery export costs by eliminating wildcard SELECT queries, implementing table suffix partitioning, clustering, and scheduled incremental tables.<\/p>\n","protected":false},"author":1,"featured_media":9236,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[91333,91258,91407,91219,91252],"class_list":["post-8822","post","type-post","status-publish","format-standard","hentry","category-digital-analytics","tag-bigquery","tag-google-analytics-4","tag-google-cloud","tag-tutorial","tag-web-analytics"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog<\/title>\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\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog\" \/>\n<meta property=\"og:description\" content=\"Technical guide on optimizing GA4 BigQuery export costs by eliminating wildcard SELECT queries, implementing table suffix partitioning, clustering, and scheduled incremental tables.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-15T11:37:00+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg\" \/>\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\/jpeg\" \/>\n<meta name=\"author\" content=\"luky\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"luky\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"3 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/\"},\"author\":{\"name\":\"luky\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports\",\"datePublished\":\"2026-08-15T11:37:00+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/\"},\"wordCount\":446,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg\",\"keywords\":[\"BigQuery\",\"Google Analytics 4\",\"Google Cloud\",\"Tutorial\",\"Web Analytics\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/\",\"name\":\"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg\",\"datePublished\":\"2026-08-15T11:37:00+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/08\\\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg\",\"width\":1200,\"height\":630,\"caption\":\"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/en\\\/digital-analytics\\\/ga4-bigquery-cost-optimization-stopping-budget-burn\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports\"}]},{\"@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\":\"luky\",\"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\":\"luky\"},\"logo\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/07\\\/lw-x2.jpg\"},\"sameAs\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\"],\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/author\\\/luky\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog","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\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/","og_locale":"en_US","og_type":"article","og_title":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog","og_description":"Technical guide on optimizing GA4 BigQuery export costs by eliminating wildcard SELECT queries, implementing table suffix partitioning, clustering, and scheduled incremental tables.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-15T11:37:00+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg","type":"image\/jpeg"}],"author":"luky","twitter_card":"summary_large_image","twitter_misc":{"Written by":"luky","Est. reading time":"3 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/"},"author":{"name":"luky","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports","datePublished":"2026-08-15T11:37:00+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/"},"wordCount":446,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg","keywords":["BigQuery","Google Analytics 4","Google Cloud","Tutorial","Web Analytics"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/","url":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/","name":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports - Lukas Wojcik - Blog","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg","datePublished":"2026-08-15T11:37:00+00:00","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/08\/fi-8822-ga4-bigquery-cost-optimization-stopping-budget-burn.jpg","width":1200,"height":630,"caption":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/en\/digital-analytics\/ga4-bigquery-cost-optimization-stopping-budget-burn\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GA4 BigQuery Cost Optimization: Stopping Budget Burn on Raw Exports"}]},{"@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":"luky","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":"luky"},"logo":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/07\/lw-x2.jpg"},"sameAs":["https:\/\/www.lukaswojcik.com\/blog"],"url":"https:\/\/www.lukaswojcik.com\/blog\/author\/luky\/"}]}},"_links":{"self":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8822","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=8822"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8822\/revisions"}],"predecessor-version":[{"id":10009,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/8822\/revisions\/10009"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/9236"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=8822"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=8822"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=8822"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}