{"id":10472,"date":"2026-09-19T12:30:00","date_gmt":"2026-09-19T10:30:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10472"},"modified":"2026-10-26T13:15:43","modified_gmt":"2026-10-26T12:15:43","slug":"ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/","title":{"rendered":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen"},"content":{"rendered":"<p>Ein kleines Abfrageergebnis bedeutet nicht automatisch eine kleine BigQuery-Rechnung. Bei der On-Demand-Abrechnung von Abfragen z\u00e4hlt die verarbeitete Datenmenge, nicht die Anzahl zur\u00fcckgegebener Zeilen. Die Auswahl ben\u00f6tigter Tagestabellen und Felder kann deshalb wesentlich mehr sparen als eine Begrenzung der Ergebniszeilen.<\/p>\n<p>Der Artikel behandelt Abfragen auf den GA4-Export. Die kapazit\u00e4tsbasierte BigQuery-Abrechnung richtet sich nach Rechenkapazit\u00e4t statt nach einem direkten Bytepreis je Abfrage; Speicherung und Daten\u00fcbernahme haben eigene Kostenregeln. Ein Probelauf hilft bei der Sch\u00e4tzung, garantiert aber keine exakte Endrechnung.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10472-review-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Ein konstanter Suffixbereich w\u00e4hlt 31 von 90 Beispiel-Tagestabellen; ein Zeilen-Datumsfilter allein l\u00e4sst alle 90 im Bereich\"><figcaption>Beispiel mit passenden Tagesdaten. Die Tabellenzahl ist kein exaktes Kostenverh\u00e4ltnis.<\/figcaption><\/figure>\n<h2>LIMIT begrenzt den Scan nicht zuverl\u00e4ssig<\/h2>\n<p>Clusterung ordnet gespeicherte Daten nach ausgew\u00e4hlten Spalten. Passende Filter k\u00f6nnen dadurch nicht ben\u00f6tigte Datenbl\u00f6cke \u00fcberspringen. Bei einer nicht geclusterten Tabelle verringert <code>SELECT * ... LIMIT 10<\/code> die gelesenen Bytes der ausgew\u00e4hlten Spalten nicht. Zehn Ergebniszeilen k\u00f6nnen einen gro\u00dfen Scan voraussetzen. F\u00fcr einen ersten Blick ohne Abfragelauf eignen sich die Tabellenvorschau oder <code>bq head<\/code>.<\/p>\n<p>Eine Ausnahme besteht bei geclusterten Tabellen: Sobald gen\u00fcgend Bl\u00f6cke das begrenzte Ergebnis liefern, kann der Scan unter Umst\u00e4nden enden. Daraus entsteht keine allgemeine Kostensicherung durch <code>LIMIT<\/code>. Auch <code>ORDER BY<\/code> ben\u00f6tigt Rechenarbeit und ist nicht automatisch kostenlos, selbst bei unver\u00e4nderter Auswahl der Eingabespalten.<\/p>\n<h2>Tabellenauswahl und Zeilenfilter erf\u00fcllen verschiedene Aufgaben<\/h2>\n<p>Bei <code>events_*<\/code> enth\u00e4lt <code>_TABLE_SUFFIX<\/code> den Namensteil hinter <code>events_<\/code>. Ein konstanter Datumsbereich beschr\u00e4nkt die gescannten Tagestabellen. Die folgende Abfrage w\u00e4hlt August 2026; Projekt- und Datensatzname sind Platzhalter.<\/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>Ein Ersatz durch <code>event_date BETWEEN '20260801' AND '20260831'<\/code> filtert Zeilen, begrenzt aber f\u00fcr sich genommen nicht die Tabellenliste des Platzhalters. Identische Ergebnisse entstehen nur bei passenden Tagestabellen ohne zus\u00e4tzliche Treffer, Duplikate oder abweichende Daten. Der Suffixbereich schlie\u00dft <code>intraday_...<\/code> aus; ein Filter allein auf das Ereignisdatum erf\u00fcllt diese Aufgabe nicht.<\/p>\n<p>Ein dynamisch aus einer anderen Tabelle ermittelter Suffixfilter kann die Scanbegrenzung verhindern. Zudem \u00fcberspringt ein Suffixfilter nicht s\u00e4mtliche Metadatenpr\u00fcfungen: Ein inkompatibles Schema oder eine vom Platzhalter erfasste View kann weiterhin zum Fehler f\u00fchren. Eine m\u00f6glichst enge Tabellenliste und ein ausreichend spezifisches Pr\u00e4fix vereinfachen die Abfrage. Streaming-Daten des laufenden Tages ben\u00f6tigen eine bewusst getrennte Auswahl.<\/p>\n<h2>Verschachtelte Unterfelder lassen sich gezielt ausw\u00e4hlen<\/h2>\n<p><code>event_params<\/code> ist ein Array aus Datens\u00e4tzen mit Schl\u00fcssel und typisierten Wertfeldern. Das Feld ist kein unteilbarer Block, der f\u00fcr jeden Parameter vollst\u00e4ndig gelesen werden muss. Das Beispiel verwendet <code>key<\/code> und <code>value.string_value<\/code>, statt s\u00e4mtliche Zahlenfelder und den vollst\u00e4ndigen Datensatz anzufordern.<\/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>Die Unterabfrage liefert je Ereignis h\u00f6chstens einen einzelnen Wert. Daf\u00fcr setzt die Abfrage h\u00f6chstens einen Schl\u00fcssel <code>page_location<\/code> je Ereignis voraus. Ein fehlender Schl\u00fcssel ergibt <code>NULL<\/code>; doppelte Schl\u00fcssel verursachen einen Fehler und ben\u00f6tigen eine ausdr\u00fcckliche Qualit\u00e4ts- oder Auswahlregel. Der Schl\u00fcsselfilter erzeugt keine separat gespeicherte Spalte <code>page_location<\/code>: Die ben\u00f6tigten Schl\u00fcssel- und Zeichenkettenfelder m\u00fcssen weiterhin untersucht werden.<\/p>\n<p>Die gezielte Auswahl gilt ebenso f\u00fcr <code>device<\/code>, <code>geo<\/code>, <code>items<\/code> und <code>user_properties<\/code>. Diese Felder k\u00f6nnen f\u00fcr eine Auswertung unverzichtbar sein. Entscheidend ist die Auswahl ben\u00f6tigter Felder, kein pauschaler Ausschluss ganzer Strukturen. Auch Filter, Verkn\u00fcpfungen und Sortierung k\u00f6nnen Felder au\u00dferhalb der Ergebnisliste ben\u00f6tigen.<\/p>\n<h2>Eine kostenlose Sch\u00e4tzung, keine exakte Rechnung<\/h2>\n<p>Der Abfrageeditor pr\u00fcft SQL und sch\u00e4tzt die verarbeiteten Bytes. Das entsprechende Kommando pr\u00fcft ohne Ausf\u00fchrung der Abfrage:<\/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><code>query.sql<\/code> enth\u00e4lt eine vollst\u00e4ndige Abfrage mit tats\u00e4chlichem Projekt, Datensatz und Zeitraum. Eine feste Bytezahl gilt nicht f\u00fcr jede GA4-Property. Bei geclusterten Tabellen kann die Sch\u00e4tzung \u00fcber dem tats\u00e4chlichen Scan liegen, weil \u00fcbersprungene Bl\u00f6cke erst bei der Ausf\u00fchrung feststehen. Ein erfolgreicher Probelauf garantiert auch keinen erfolgreichen Echtlauf; Skripte und dynamisches SQL haben zus\u00e4tzliche Pr\u00fcfgrenzen.<\/p>\n<p>Die tats\u00e4chliche On-Demand-Geb\u00fchr h\u00e4ngt au\u00dferdem von Tarif, Freimenge, Rundung und Mindestabrechnung ab. BigQuery nennt mindestens 10 MB je referenzierter Tabelle und je Abfrage. Treffer im Ergebniscache k\u00f6nnen Abfragegeb\u00fchren vermeiden; Abfragen \u00fcber mehrere Tabellen mit Platzhalter unterst\u00fctzen diesen Cache jedoch nicht. Kapazit\u00e4tskosten auf Slotbasis lassen sich aus der Bytesch\u00e4tzung nicht exakt berechnen.<\/p>\n<h2>Clusterung und eine wiederverwendbare Ergebnistabelle<\/h2>\n<p>Eine Tabelle mit ausschlie\u00dflich ben\u00f6tigten Feldern und zusammengefassten Ergebnissen kann wiederholte Arbeit reduzieren, wenn viele Berichte dieselben Felder oder Aggregate verwenden. Die Ersparnis muss Aktualisierung und Speicherung rechtfertigen; eine allgemeine Grenze von drei manuellen Ausf\u00fchrungen existiert nicht. Das Beispiel erstellt eine leere Tabelle f\u00fcr Ereigniszahlen je Datum, Ereignisname und pseudonymer Kennung. Die Anweisung f\u00fcllt keine Daten ein und berechnet keine Nutzer- oder Sitzungszahlen.<\/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>Zum Bef\u00fcllen muss die exportierte Zeichenkette <code>event_date<\/code> mit <code>PARSE_DATE('%Y%m%d', event_date)<\/code> in ein Datum umgewandelt werden; <code>total_events<\/code> ben\u00f6tigt die beabsichtigte Gruppierung nach Datum, Ereignisname und Kennung.<\/p>\n<p>Der Datensatz muss am passenden Standort existieren. <code>IF NOT EXISTS<\/code> repariert keine vorhandene Tabelle mit abweichendem Schema oder anderer Clusterung. Partitionen teilen die Tabelle nach Datum in Abschnitte auf. Die Partitionsfilteroption verlangt in sp\u00e4teren Abfragen eine geeignete Bedingung f\u00fcr dieses Datum; ein unn\u00f6tig weiter Datumsbereich kann trotzdem viele Daten lesen.<\/p>\n<p>Clusterung kann bei geeigneten Filtern Speicherbl\u00f6cke \u00fcberspringen. Bis zu vier Clusterspalten sind m\u00f6glich; die Reihenfolge z\u00e4hlt. <code>event_name<\/code> an erster Stelle passt zu h\u00e4ufigen Filtern auf dieses Feld. Abfragen ausschlie\u00dflich nach Kennung k\u00f6nnen eine andere Reihenfolge ben\u00f6tigen. Kleine Tabellen oder kleine Tagespartitionen profitieren m\u00f6glicherweise kaum. Ma\u00dfgeblich sind Messungen mit den tats\u00e4chlich verwendeten Berichten.<\/p>\n<div class=\"lw-faq\"><h2>Fragen und Antworten<\/h2>\n<h3>L\u00e4sst sich eine teure Abfrage vor der Ausf\u00fchrung abweisen?<\/h3>\n<p>F\u00fcr On-Demand-Abfragen setzt <code>--maximum_bytes_billed<\/code> eine Grenze f\u00fcr die gesch\u00e4tzten abrechenbaren Bytes je Abfrage. Eine h\u00f6here Sch\u00e4tzung f\u00fchrt zur Abweisung ohne Ausf\u00fchrung. Eine geclusterte Abfrage kann dadurch auch bei einem sp\u00e4ter m\u00f6glicherweise kleineren Scan abgewiesen werden. Tageskontingente je Projekt oder Nutzer erg\u00e4nzen diese Kontrolle; Google beschreibt benutzerdefinierte Kontingente allerdings als n\u00e4herungsweise statt als absolute Ausgabengarantie.<\/p>\n<h3>Wie gelangen versp\u00e4tete GA4-Erg\u00e4nzungen in die Ergebnistabelle?<\/h3>\n<p>GA4 kann Tagestabellen bis zu drei Tage nach dem Ereignisdatum aktualisieren. Ein t\u00e4glicher Lauf kann die vier abgeschlossenen Kalendertage vor dem aktuellen Datum in der Property-Zeitzone neu aufbauen. Der \u00e4lteste Tag wird dadurch nach Ablauf des vollst\u00e4ndigen dreit\u00e4gigen Erg\u00e4nzungsfensters nochmals gelesen. Das ist etwas anderes als ausschlie\u00dflich den Vortag anzuh\u00e4ngen oder heute unter vier Tagen mitzuz\u00e4hlen.<\/p>\n<p>Vor dem Ersetzen vorhandener Ergebnisse muss der Lauf alle erwarteten Quelltabellen pr\u00fcfen und die Ersatzdaten erfolgreich lesen. Eine fehlende Tabelle belegt keine null Ereignisse. Die Zwischentabelle h\u00e4lt Ersatzdaten bereit, bevor die Zieltabelle ver\u00e4ndert wird. Eine Transaktion \u00fcbernimmt L\u00f6schung und Einf\u00fcgen gemeinsam; bei einem Fehler bleibt keine der beiden \u00c4nderungen bestehen. Eine Zwischentabelle und anschlie\u00dfend eine Transaktion f\u00fcr zeitlich begrenztes <code>DELETE<\/code> und <code>INSERT<\/code> verhindern eine leere Zieltabelle nach fehlgeschlagenem Einf\u00fcgen. Ein passend begrenztes <code>MERGE<\/code> ben\u00f6tigt ebenfalls eine Regel f\u00fcr Zielzeilen, die in der Quelle nicht mehr vorkommen.<\/p>\n<p>Die Existenz einer Tabelle beweist keinen vollst\u00e4ndigen Export. Exportverz\u00f6gerungen, historische Korrekturen und L\u00f6schungen ben\u00f6tigen \u00dcberwachung sowie einen Reparaturweg au\u00dferhalb des rollierenden Fensters. Aktualisierungsl\u00e4ufe sollten zudem nicht \u00fcberlappen. Partitionierung und Suffixfilter liefern diese Vollst\u00e4ndigkeitspr\u00fcfungen nicht automatisch.<\/p><\/div>\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/cloud.google.com\/bigquery\/pricing\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery-Preise<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">Entwicklungsdokumentation f\u00fcr Google Analytics 4<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/clustered-tables\" target=\"_blank\" rel=\"noopener noreferrer\">Einf\u00fchrung in geclusterte Tabellen<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-costs\" target=\"_blank\" rel=\"noopener noreferrer\">Google: Kosten sch\u00e4tzen und begrenzen<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/querying-wildcard-tables\" target=\"_blank\" rel=\"noopener noreferrer\">Google: Tabellenabfragen mit Platzhaltern<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google: Schema des GA4-Exports nach BigQuery<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-performance-nested\" target=\"_blank\" rel=\"noopener noreferrer\">Google: verschachtelte und wiederholte Felder<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-performance-compute\" target=\"_blank\" rel=\"noopener noreferrer\">Google: Berechnungsaufwand von Abfragen<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/custom-quotas\" target=\"_blank\" rel=\"noopener noreferrer\">Google: eigene Abfragekontingente<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/multi-statement-queries\" target=\"_blank\" rel=\"noopener noreferrer\">Google: Abfragen mit mehreren Anweisungen<\/a><\/li><\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>On-Demand-Abfragekosten h\u00e4ngen an der gescannten Datenmenge statt an Ergebniszeilen. Konstante Suffixfilter und gezielte Feldauswahl k\u00f6nnen Scans verkleinern; der kostenlose Probelauf liefert eine Sch\u00e4tzung statt einer exakten Rechnung.<\/p>\n","protected":false},"author":1,"featured_media":30791,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[92081,92091],"class_list":["post-10472","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-de","tag-bigquery-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>GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.\" \/>\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\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-19T10:30: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-10472.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\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen\",\"datePublished\":\"2026-09-19T10:30:00+00:00\",\"dateModified\":\"2026-10-26T12:15:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/\"},\"wordCount\":1202,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10472.png\",\"keywords\":[\"BigQuery\",\"Google Analytics 4\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/\",\"name\":\"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10472.png\",\"datePublished\":\"2026-09-19T10:30:00+00:00\",\"dateModified\":\"2026-10-26T12:15:43+00:00\",\"description\":\"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10472.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/klarheit-20261111-10472.png\",\"width\":1200,\"height\":630,\"caption\":\"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen\"}]},{\"@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":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik","description":"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.","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\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/","og_locale":"en_US","og_type":"article","og_title":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik","og_description":"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-19T10:30: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-10472.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\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen","datePublished":"2026-09-19T10:30:00+00:00","dateModified":"2026-10-26T12:15:43+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/"},"wordCount":1202,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10472.png","keywords":["BigQuery","Google Analytics 4"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/","name":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10472.png","datePublished":"2026-09-19T10:30:00+00:00","dateModified":"2026-10-26T12:15:43+00:00","description":"Warum LIMIT eine Abfrage nicht billiger macht, warum event_date keine Tabellen beschneidet und wie ein kostenloser Probelauf die Kostenfrage genau beantwortet.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10472.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/klarheit-20261111-10472.png","width":1200,"height":630,"caption":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/ga4-daten-in-bigquery-gunstiger-abfragen-datenmenge-prufen-und-kosten-schatzen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"GA4-Daten in BigQuery g\u00fcnstiger abfragen: Datenmenge pr\u00fcfen und Kosten sch\u00e4tzen"}]},{"@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\/10472","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=10472"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10472\/revisions"}],"predecessor-version":[{"id":27286,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10472\/revisions\/27286"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/30791"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10472"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10472"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10472"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}