{"id":12892,"date":"2026-09-05T11:15:00","date_gmt":"2026-09-05T09:15:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=12892"},"modified":"2026-10-09T22:53:12","modified_gmt":"2026-10-09T20:53:12","slug":"einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/","title":{"rendered":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen"},"content":{"rendered":"<p>In GA4-Berichten erscheint die Einwilligung als Zusammenfassung, wenn \u00fcberhaupt. Im BigQuery-Export wird der Status f\u00fcr jedes Ereignis in einem verschachtelten Datensatz neben den Ereignisdaten festgehalten. Er beschreibt den Zustand zum Zeitpunkt der Aufzeichnung.<\/p>\n\n<p>Das ist ein deutlich besserer Gegenstand zum Arbeiten, und er bringt eine Falle mit, die eine falsche Zahl erzeugt statt eines Fehlers.<\/p>\n\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/zustandsfeld-de.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Ein einger\u00fcckter Schemabaum der GA4-Ereignistabelle mit hervorgehobenem Satz privacy_info und seinen drei Zeichenkettenfeldern, daneben ein Feld mit den drei m\u00f6glichen Werten einschlie\u00dflich Leerwert und ein Feld mit dem Vergleich zweier SQL-Filter\">\n<figcaption>Drei m\u00f6gliche Werte in einem Feld, das die meisten Abfragen filtern, als h\u00e4tte es zwei.<\/figcaption>\n<\/figure>\n\n<h2>Wo er steht<\/h2>\n<p>Der Datensatz hei\u00dft <code>privacy_info<\/code> und speichert die Speicherzust\u00e4nde als Zeichenketten, nicht als Wahrheitswerte. Auf die verschachtelten Felder greifst Du mit Punktnotation zu; die Vergleichswerte stehen als Zeichenketten in Anf\u00fchrungszeichen. Weil Werte fehlen k\u00f6nnen, muss vor der Berechnung einer Quote feststehen, wie ein fehlender Wert behandelt wird.<\/p>\n\n\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\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  event_date,\n<\/span><span class=\"cbb-line\">  privacy_info.analytics_storage <span class=\"cbb-keyword\">AS<\/span> analytics,\n<\/span><span class=\"cbb-line\">  privacy_info.ads_storage       <span class=\"cbb-keyword\">AS<\/span> ads,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*)                       <span class=\"cbb-keyword\">AS<\/span> ereignisse\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`projekt.analytics_XXXXXX.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>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> <span class=\"cbb-number\">1<\/span>, <span class=\"cbb-number\">2<\/span>, <span class=\"cbb-number\">3<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> <span class=\"cbb-number\">1<\/span>, <span class=\"cbb-number\">4<\/span> <span class=\"cbb-keyword\">DESC<\/span>\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- vor jedem Filter laufen lassen. Der Zweck ist zu sehen,<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- wie viele Zeilen in den dritten Topf fallen, denn diese<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- Zahl entscheidet, ob die Falle unten ueberhaupt greift<\/span><\/span><\/code><\/pre><\/figure>\n\n\n<p>Erst gruppieren und dann filtern ist hier die ganze Disziplin. Das kostet eine Abfrage, auf einem einzelnen Monat fast nichts, und beantwortet die Frage, von der jede weitere Abfrage abh\u00e4ngt.<\/p>\n\n<h2>Die Falle<\/h2>\n<p>Zwei Filter, die sich wie Gegens\u00e4tze lesen, sind keine. <code>analytics_storage = 'No'<\/code> w\u00e4hlt Ereignisse mit ausdr\u00fccklicher Ablehnung. <code>analytics_storage != 'Yes'<\/code> w\u00e4hlt Ablehnungen plus alles ohne festgehaltenen Zustand &#8211; denn in SQL ergibt ein Vergleich gegen einen Leerwert wieder einen Leerwert und nicht wahr, sodass der erste Filter die leeren Zeilen still fallen l\u00e4sst und der zweite sie beh\u00e4lt.<\/p>\n<p>Eine Einwilligungsquote auf dem ersten f\u00e4llt h\u00f6her aus als eine auf dem zweiten, auf denselben Daten, f\u00fcr denselben Tag. Von au\u00dfen ist keine der beiden offensichtlich falsch; beide liefern einen plausiblen Prozentsatz. Welche stimmt, h\u00e4ngt davon ab, was die Leerwerte tats\u00e4chlich sind, und das ist eine Frage an die Umsetzung, nicht an SQL.<\/p>\n<p>Leerwerte bedeuten meistens, dass beim Ausl\u00f6sen des Ereignisses kein Einwilligungssignal beim Tag ankam &#8211; ein Treffer vor der Entscheidung am Banner, eine Seite, auf der die Einwilligungsplattform nicht lud, ein serverseitiges Ereignis, das ohne durchgereichten Zustand gebaut wurde. Das sind drei verschiedene Lagen mit drei verschiedenen Bedeutungen, und sie mit ausdr\u00fccklichen Ablehnungen in einen Topf zu werfen, \u00fcberzeichnet die Ablehnung.<\/p>\n\n<h2>Was damit m\u00f6glich wird<\/h2>\n<p>Der Zustand liegt f\u00fcr jedes Ereignis vor, nicht nur f\u00fcr die gesamte Property. Deshalb l\u00e4sst er sich zusammen mit den anderen Feldern derselben Ereigniszeile auswerten.<\/p>\n\n\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers 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\">nach Seite     welche Seiten am haeufigsten abgelehnt werden\n<\/span><span class=\"cbb-line\">               meist die, auf denen das Banner mit dem Inhalt\n<\/span><span class=\"cbb-line\">               um dieselbe Bildschirmflaeche ringt\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">nach Geraet    Mobil und Rechner unterscheiden sich weit\n<\/span><span class=\"cbb-line\">               genug, dass eine Gesamtzahl keines von beiden\n<\/span><span class=\"cbb-line\">               beschreibt\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">nach Quelle    Verkehr aus einem Link innerhalb einer App\n<\/span><span class=\"cbb-line\">               verhaelt sich anders als ein Direktbesuch\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">nach Stunde    eine Auslieferung, die das Banner zerlegt,\n<\/span><span class=\"cbb-line\">               zeigt sich als Stufe zu einer bestimmten\n<\/span><span class=\"cbb-line\">               Stunde - was ein Tageswert vollstaendig\n<\/span><span class=\"cbb-line\">               glaettet<\/span><\/code><\/pre><\/figure>\n\n\n<p>Der Schnitt nach Seite lohnt sich am schnellsten, weil er aus einer Zahl, mit der niemand etwas anfangen kann, eine Liste konkreter Seiten macht.<\/p>\n\n<h2>Zwei Dinge, die \u00fcber die Zeile zu wissen sind<\/h2>\n<p>Ein einzelner Besuch kann Ereignisse in mehr als einem Zustand enthalten. Wer ein Banner mitten in einer Sitzung annimmt, hinterl\u00e4sst unter derselben Pseudokennung eine Spur abgelehnter Ereignisse, gefolgt von erteilten &#8211; was richtig ist und jede Abfrage leise zerlegt, die einen Zustand je Nutzer annimmt.<\/p>\n<p>Und das Exportschema w\u00e4chst. Der Ereignistabelle wurden schon Felder hinzugef\u00fcgt und werden wieder welche hinzugef\u00fcgt, was das Argument gegen <code>SELECT *<\/code> in allem Nachgelagerten ist: Eine unangek\u00fcndigt eintreffende Spalte ist harmlos f\u00fcr eine Abfrage, die ihre Spalten benennt, und ein gebrochener Ladeauftrag f\u00fcr eine, die es nicht tut.<\/p>\n\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n\n<h3>Warum enth\u00e4lt ein Export manchmal keine einzige Ablehnung?<\/h3>\n<p>Meist, weil der Consent Mode im einfachen Modus l\u00e4uft. Dort l\u00e4dt das Tag erst nach der Einwilligung; wer ablehnt, sendet nichts, und im Export stehen nur Ereignisse mit erteilter Einwilligung oder ohne festgehaltenen Zustand. Eine Einwilligungsquote l\u00e4sst sich aus einem solchen Export nicht bilden, sie muss dann aus den Aufzeichnungen der Einwilligungsplattform kommen.<\/p>\n\n<h3>Wie lassen sich die Leerwerte den drei Lagen aus dem Artikel zuordnen?<\/h3>\n<p>\u00dcber die \u00fcbrigen Felder derselben Zeile, denn jede der drei Lagen hinterl\u00e4sst ein eigenes Muster:<\/p>\n<ul>\n<li>Treffer vor der Entscheidung am Banner ballen sich am Anfang einer Sitzung. Werden die Ereignisse je Sitzung nach event_timestamp geordnet, stehen die Leerwerte vorn, gefolgt von Ereignissen mit festgehaltenem Zustand.<\/li>\n<li>Eine Seite, auf der die Einwilligungsplattform nicht lud, zeigt sich im Schnitt nach Seite oder nach Stunde: Leerwerte geh\u00e4uft auf bestimmten Seiten oder Seitenvorlagen oder als Stufe ab dem Zeitpunkt einer Auslieferung.<\/li>\n<li>Serverseitige Ereignisse ohne durchgereichten Zustand lassen sich am Ereignisnamen erkennen, wenn nur der Server sie sendet; sie sind dann durchgehend leer, unabh\u00e4ngig von Seite und Uhrzeit.<\/li>\n<\/ul>\n<p>In der Abfrage hilft es, fehlende Werte als dritte Gruppe sichtbar zu halten, statt ihre Behandlung dem Vergleich zu \u00fcberlassen. <code>COALESCE(privacy_info.analytics_storage, 'leer')<\/code> ersetzt den Leerwert durch eine eigene Auspr\u00e4gung, die ausdr\u00fccklich in jeder Gruppierung und jedem Filter erscheint. Was \u201eleer\u201c bedeutet, wird damit einmal an einer Stelle entschieden und nicht stillschweigend in jedem WHERE.<\/p>\n\n<h3>Warum grenzt die Abfrage \u00fcber _TABLE_SUFFIX ab und nicht allein \u00fcber event_date?<\/h3>\n<p>Aus zwei Gr\u00fcnden. Erstens rechnet BigQuery Abfragen im On-Demand-Tarif nach gelesenen Daten ab, und nur ein Filter auf _TABLE_SUFFIX bestimmt, welche Tagestabellen \u00fcberhaupt gelesen werden; ein Filter allein auf event_date liest zun\u00e4chst jede Tabelle, die der Platzhalter erfasst, und verwirft die Zeilen erst danach.<\/p>\n<p>Zweitens erfasst <code>events_*<\/code> auch die Tabellen des Streaming-Exports, <code>events_intraday_\u2026<\/code>, deren Suffix mit <code>intraday_<\/code> beginnt. Ein Bereich aus Datumswerten wie &#8216;20260801&#8217; bis &#8216;20260831&#8217; schlie\u00dft sie aus. Reicht ein Zeitraum bis an den laufenden Tag heran, liest ein Filter nur auf event_date dagegen deren vorl\u00e4ufige Zeilen mit.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846\" target=\"_blank\" rel=\"noopener noreferrer\">GA4 BigQuery Export schema<\/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>Der Export h\u00e4lt den Einwilligungsstand fest, der beim Schreiben jedes Ereignisses galt, in einem verschachtelten Satz neben dem Ereignis. Das Feld ist eine Zeichenkette und kein Wahrheitswert, es kann leer sein, und eine Einwilligungsquote ohne R\u00fccksicht darauf f\u00e4llt in die schmeichelhafte Richtung falsch aus.<\/p>\n","protected":false},"author":1,"featured_media":18796,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[92081,92142,92091],"class_list":["post-12892","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-de","tag-bigquery-de","tag-consent-mode-v2-de","tag-google-analytics-4-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.\" \/>\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\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-05T09:15:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T20:53:12+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.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=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen\",\"datePublished\":\"2026-09-05T09:15:00+00:00\",\"dateModified\":\"2026-10-09T20:53:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/\"},\"wordCount\":864,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png\",\"keywords\":[\"BigQuery\",\"Consent Mode v2\",\"Google Analytics 4\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/\",\"name\":\"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png\",\"datePublished\":\"2026-09-05T09:15:00+00:00\",\"dateModified\":\"2026-10-09T20:53:12+00:00\",\"description\":\"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png\",\"width\":1200,\"height\":630,\"caption\":\"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen\"}]},{\"@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":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik","description":"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.","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\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/","og_locale":"en_US","og_type":"article","og_title":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik","og_description":"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-05T09:15:00+00:00","article_modified_time":"2026-10-09T20:53:12+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen","datePublished":"2026-09-05T09:15:00+00:00","dateModified":"2026-10-09T20:53:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/"},"wordCount":864,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png","keywords":["BigQuery","Consent Mode v2","Google Analytics 4"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/","name":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png","datePublished":"2026-09-05T09:15:00+00:00","dateModified":"2026-10-09T20:53:12+00:00","description":"Wie sich analytics_storage und ads_storage je Ereignis im GA4-BigQuery-Export lesen lassen, warum der Leerfall eine Einwilligungsquote zerst\u00f6rt und was der Rohexport zeigt, was die Berichte nicht zeigen.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-12892-einwilligungsstatus-je-ereignis-im-g-k.png","width":1200,"height":630,"caption":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/einwilligungsstatus-je-ereignis-im-ga4-bigquery-export-auslesen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Einwilligungsstatus je Ereignis im GA4-BigQuery-Export auslesen"}]},{"@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\/12892","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=12892"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/12892\/revisions"}],"predecessor-version":[{"id":21948,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/12892\/revisions\/21948"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/18796"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=12892"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=12892"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=12892"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}