{"id":10123,"date":"2026-09-27T13:29:00","date_gmt":"2026-09-27T11:29:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=10123"},"modified":"2026-10-26T11:41:34","modified_gmt":"2026-10-26T10:41:34","slug":"tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/","title":{"rendered":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben"},"content":{"rendered":"<p>BigQuery stellt exportierte GA4-Events f\u00fcr eigene SQL-Auswertungen bereit: Verkn\u00fcpfungen mit Gesch\u00e4ftsdaten, ausdr\u00fccklich definierte Kennzahlen und beobachtete Seitenabfolgen. Auch GA4 bietet Pfad- und Trichterexplorationen. SQL erweitert die Kontrolle \u00fcber Berechnung und Ausgabe.<\/p>\n<p>Die Anleitung beginnt mit dem t\u00e4glichen Export, pr\u00fcft den Eingang von Events und gruppiert anschlie\u00dfend beobachtete Webseitenaufrufe nach Sitzungskennungen. Die Beispiele beschreiben den ausgew\u00e4hlten Export, keine garantiert vollst\u00e4ndigen Besuche.<\/p>\n<figure class=\"lw-diagram\"><img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-10123-bigquery-20261024.png\" width=\"1120\" height=\"580\" loading=\"lazy\" alt=\"Exportumfang, verf\u00fcgbare Kennungen und Sortiergrenzen bestimmen die Aussage eines rekonstruierten Pfads.\"><figcaption>Exportumfang, verf\u00fcgbare Kennungen und Sortiergrenzen bestimmen die Aussage eines rekonstruierten Pfads.<\/figcaption><\/figure>\n<h2>1. T\u00e4glichen Export einrichten<\/h2>\n<p>Die Verkn\u00fcpfung entsteht unter <strong>Verwaltung \u2192 Produktverkn\u00fcpfungen \u2192 BigQuery-Verkn\u00fcpfungen<\/strong>. In GA4 sind mindestens Bearbeitungsrechte auf Property-Ebene erforderlich. Das Cloud-Projekt ben\u00f6tigt die dokumentierten IAM- und Dienstberechtigungen. Die Rolle Owner enth\u00e4lt diese Rechte; eine passende engere Rollenkombination kann ebenfalls ausreichen. Die BigQuery-API muss aktiviert sein.<\/p>\n<p>Die Einrichtung umfasst Cloud-Projekt, Speicherort, Streams und ausgeschlossene Events. F\u00fcr Standard-Properties stehen Daily und Streaming unabh\u00e4ngig voneinander bereit; geeignete Analytics-360-Properties bieten zus\u00e4tzlich Fresh Daily. Daily erzeugt <code>events_YYYYMMDD<\/code>, Streaming vorl\u00e4ufige <code>events_intraday_YYYYMMDD<\/code>-Tabellen mit m\u00f6glichen L\u00fccken. F\u00fcr abgeschlossene Tage eignet sich der t\u00e4gliche Export besser; versp\u00e4tete Events k\u00f6nnen j\u00fcngere Tagestabellen allerdings noch ver\u00e4ndern.<\/p>\n<p>Die Verkn\u00fcpfung holt fr\u00fchere Property-Daten nicht nach. Erste Daten treffen normalerweise innerhalb von 24 Stunden ein; eine bestimmte t\u00e4gliche Lieferzeit ist nicht garantiert. F\u00fcr Standard-Properties gilt ein t\u00e4gliches Limit von einer Million exportierten Events. Eine \u00dcberschreitung kann den t\u00e4glichen Export aussetzen. Ausgeschlossene Streams oder Events senken das Volumen, ver\u00e4ndern aber auch die Grundlage der Auswertung.<\/p>\n<p>Ein t\u00e4glicher Export bedeutet keine kostenlose Cloud-Nutzung: Speicherung und Abfragen k\u00f6nnen Kosten verursachen, Streaming zus\u00e4tzlich \u00dcbertragungskosten. Vor der ersten Abfrage zeigen Editor-Sch\u00e4tzung oder Dry Run die erwartete Verarbeitung. Ein Dry Run pr\u00fcft die Abfrage, ohne diese auszuf\u00fchren. <code>maximum bytes billed<\/code> begrenzt bei bedarfsabh\u00e4ngiger Abrechnung die abrechenbaren Bytes je Abfrage. Die folgenden Beispiele verwenden einen bewusst begrenzten Zeitraum.<\/p>\n<h2>2. Unterschiede zu GA4-Berichten verstehen<\/h2>\n<p>Der Event-Export arbeitet ohne Stichprobe und fasst viele unterschiedliche Dimensionswerte nicht in einer <code>(other)<\/code>-Zeile zusammen. GA4-Berichte und Explorationen k\u00f6nnen unterschiedliche Ausgangstabellen verwenden; Stichproben, Aggregationsgrenzen oder Datenschutzschwellen sind m\u00f6glich. Schwellenwerte betreffen beispielsweise demografische Angaben und Suchanfragen. Aktive Google-Signale erkl\u00e4ren nicht pauschal jede fehlende Zeile.<\/p>\n<p>BigQuery reproduziert weder die Verhaltens- und Schl\u00fcsselereignismodellierung noch die datengetriebene Attribution aus GA4. Trotzdem fehlen nicht s\u00e4mtliche Attributionsfelder: Das aktuelle Schema enth\u00e4lt unter anderem beobachtete Last-Click-Sitzungsquellen, soweit verf\u00fcgbar. Bei Abweichungen sind Kennzahl, Zeitraum, Property-Zeitzone, Identit\u00e4tsverfahren, Exportfilter und Datenstand abzugleichen. Eine Differenz ist weder automatisch ein Fehler noch automatisch unbedenklich.<\/p>\n<h2>3. Das verschachtelte Schema lesen<\/h2>\n<p>Jede exportierte Zeile steht f\u00fcr ein Event. Direkte Spalten sind unter anderem <code>event_name<\/code>, <code>event_date<\/code>, <code>event_timestamp<\/code> und <code>user_pseudo_id<\/code>. Zus\u00e4tzliche Werte wie <code>ga_session_id<\/code> und <code>page_location<\/code> liegen in <code>event_params<\/code>, einer Liste von Namen und zugeh\u00f6rigen Werten innerhalb der Eventzeile. <code>UNNEST<\/code> macht diese Records zug\u00e4nglich; eine skalare Unterabfrage liest genau einen Wert f\u00fcr den gesuchten Namen.<\/p>\n<p><code>event_date<\/code> folgt der eingestellten Berichtszeitzone. <code>event_timestamp<\/code> wird in UTC-Mikrosekunden angegeben; mehrere gemeinsam \u00fcbertragene Events k\u00f6nnen denselben Zeitstempel tragen. Batch-Felder erg\u00e4nzen Reihenfolgeinformationen. Eine Pseudo-ID bezeichnet eine App-Instanz oder einen Browserkontext, keine verifizierte Person. Fehlende und wechselnde Kennungen begrenzen die Rekonstruktion. Die Abfrage gruppiert nach den getrennten Feldern <code>stream_id<\/code>, Pseudo-ID und Sitzungs-ID.<\/p>\n<h2>4. Eingang exportierter Events pr\u00fcfen<\/h2>\n<p>Projektkennung, Property-Dataset und Datumswerte sind Platzhalter f\u00fcr tats\u00e4chlich vorhandene Tagestabellen. Die Abfragen verwenden GoogleSQL.<\/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>\n<\/span><span class=\"cbb-line\">  event_date,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> events,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(<span class=\"cbb-keyword\">DISTINCT<\/span> user_pseudo_id) <span class=\"cbb-keyword\">AS<\/span> distinct_pseudo_ids,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(user_pseudo_id <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> events_without_pseudo_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`project.analytics_XXXXXXXXX.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\">'20260920'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-string\">'20260926'<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> event_date\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> event_date;<\/span><\/code><\/pre><\/figure>\n<p><code>distinct_pseudo_ids<\/code> z\u00e4hlt unterschiedliche vorhandene Kennungen, weder aktive GA4-Nutzer noch eindeutige Personen. Der zus\u00e4tzliche Null-Z\u00e4hler macht fehlende Kennungen sichtbar. Ein Tag ohne Tabelle oder Events erzeugt keine Ergebniszeile; f\u00fcr einen l\u00fcckenlosen Kalender w\u00e4re eine eigene Datumstabelle n\u00f6tig.<\/p>\n<h2>5. Eine beobachtete Seitenabfolge bilden<\/h2>\n<p>Das Webbeispiel verwendet <code>page_view<\/code>. F\u00fcr App-Bildschirme sind ein anderes Event und ein passendes Ortsfeld n\u00f6tig. Die ausgew\u00e4hlten Tabellen m\u00fcssen die gezeigten Batch-Felder des aktuellen Schemas enthalten.<\/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\">WITH<\/span> page_views <span class=\"cbb-keyword\">AS<\/span> (\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">    stream_id,\n<\/span><span class=\"cbb-line\">    user_pseudo_id,\n<\/span><span class=\"cbb-line\">    (<span class=\"cbb-keyword\">SELECT<\/span> value.int_value <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params)\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-keyword\">WHERE<\/span> <span class=\"cbb-keyword\">key<\/span> = <span class=\"cbb-string\">'ga_session_id'<\/span>) <span class=\"cbb-keyword\">AS<\/span> session_id,\n<\/span><span class=\"cbb-line\">    event_timestamp,\n<\/span><span class=\"cbb-line\">    batch_page_id,\n<\/span><span class=\"cbb-line\">    batch_ordering_id,\n<\/span><span class=\"cbb-line\">    batch_event_index,\n<\/span><span class=\"cbb-line\">    (<span class=\"cbb-keyword\">SELECT<\/span> value.string_value <span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-keyword\">UNNEST<\/span>(event_params)\n<\/span><span class=\"cbb-line\">      <span class=\"cbb-keyword\">WHERE<\/span> <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_XXXXXXXXX.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\">'20260920'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-string\">'20260926'<\/span>\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">AND<\/span> event_name = <span class=\"cbb-string\">'page_view'<\/span>\n<\/span><span class=\"cbb-line\">)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  stream_id,\n<\/span><span class=\"cbb-line\">  user_pseudo_id,\n<\/span><span class=\"cbb-line\">  session_id,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> page_views,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(page_location <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-constant\">NULL<\/span>) <span class=\"cbb-keyword\">AS<\/span> missing_locations,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">STRING_AGG<\/span>(\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-function\">COALESCE<\/span>(<span class=\"cbb-function\">REGEXP_REPLACE<\/span>(page_location, r<span class=\"cbb-string\">'&#91;?#&#93;.*$'<\/span>, <span class=\"cbb-string\">''<\/span>),\n<\/span><span class=\"cbb-line\">             <span class=\"cbb-string\">'&#91;missing URL&#93;'<\/span>),\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-string\">' &gt; '<\/span> <span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> event_timestamp, batch_page_id,\n<\/span><span class=\"cbb-line\">      batch_ordering_id, batch_event_index, page_location\n<\/span><span class=\"cbb-line\">  ) <span class=\"cbb-keyword\">AS<\/span> observed_path\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> page_views\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> user_pseudo_id <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> session_id <span class=\"cbb-keyword\">IS<\/span> <span class=\"cbb-keyword\">NOT<\/span> <span class=\"cbb-constant\">NULL<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> stream_id, user_pseudo_id, session_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">HAVING<\/span> <span class=\"cbb-function\">COUNT<\/span>(*) &gt; <span class=\"cbb-number\">1<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> page_views <span class=\"cbb-keyword\">DESC<\/span>, stream_id, user_pseudo_id, session_id\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">LIMIT<\/span> <span class=\"cbb-number\">100<\/span>;<\/span><\/code><\/pre><\/figure>\n<p>Fehlende Pseudo- und Sitzungs-IDs werden ausgeschlossen, statt fremde Events unter einer gemeinsamen Null-Gruppe zusammenzufassen. Fehlende Seitenadressen bleiben im Z\u00e4hler und Pfad sichtbar. Das Beispiel entfernt Query-Parameter und Fragmente, erh\u00e4lt aber den Hostnamen. Dadurch fallen Seiten verschiedener Hosts nicht unbemerkt in dieselbe Beschriftung. Bei querybasiertem Routing ist eine andere Normalisierung erforderlich.<\/p>\n<p>Die Sortierung nutzt Zeitstempel und vorhandene Batch-Felder. Die URL am Ende der Sortierliste sorgt lediglich f\u00fcr eine eindeutiger angeordnete Anzeige, nicht f\u00fcr einen Nachweis der zeitlichen Reihenfolge. Gleiche oder fehlende Sortierwerte, parallele Tabs und verz\u00f6gerte \u00dcbertragung k\u00f6nnen die tats\u00e4chliche Abfolge offenlassen. Der Pfad enth\u00e4lt nur beobachtete Seitenaufrufe innerhalb des gew\u00e4hlten Zeitraums. Sitzungen an den Zeitraumgrenzen k\u00f6nnen abgeschnitten sein; Sitzungen mit nur einem Seitenaufruf entfernt <code>HAVING<\/code> ausdr\u00fccklich.<\/p>\n<p>Die skalaren Unterabfragen erwarten h\u00f6chstens einen Wert je gesuchtem Parameterschl\u00fcssel und Event. Bei doppelten Schl\u00fcsseln ist die Datenursache zu pr\u00fcfen; eine willk\u00fcrliche Auswahl des ersten Werts w\u00fcrde das Problem verstecken. F\u00fcr Schritte bis zum Kauf w\u00e4ren zus\u00e4tzlich Kauf-Events n\u00f6tig: Der aktuelle Filter beh\u00e4lt ausschlie\u00dflich Seitenaufrufe.<\/p>\n<h2>6. Ergebnisse vor dem Dashboard pr\u00fcfen<\/h2>\n<ul><li>T\u00e4gliche Eventzahlen, ausgeschlossene Streams und Events sowie fehlende Kennungen pr\u00fcfen.<\/li><li>Einige rekonstruierte Sitzungen mit den Einzelzeilen vergleichen, einschlie\u00dflich gleicher Zeitstempel und Sitzungen \u00fcber Mitternacht.<\/li><li>Eine ausdr\u00fccklich definierte Kennzahl unter gleichen Datums- und Identit\u00e4tsannahmen mit GA4 vergleichen; Modellierungsunterschiede von Exportl\u00fccken trennen.<\/li><li>Zugriffsrechte und Tabellenablauf bewusst festlegen. Exportierte Daten besitzen einen eigenen Lebenszyklus au\u00dferhalb von GA4.<\/li><\/ul>\n<div class=\"lw-faq\"><h2>Fragen und Antworten<\/h2>\n<h3>Erfasst events_* auch Streaming-Tabellen?<\/h3><p>Ja. Der numerische Suffixbereich beider Beispiele schlie\u00dft <code>intraday_YYYYMMDD<\/code> aus. Eine Abfrage mit aktuellen Streaming-Daten sollte pro Datum nur eine Tabellenquelle verwenden. \u00dcberlappende Tages- und Intraday-Zeilen d\u00fcrfen nicht addiert werden. Streaming bleibt vorl\u00e4ufig und garantiert keine Vollst\u00e4ndigkeit.<\/p>\n<h3>Begrenzt LIMIT 100 die Abfragekosten?<\/h3><p>Bei diesen Aggregationen \u00fcber gew\u00f6hnliche, nicht geclusterte Exporttabellen nicht. Das Limit begrenzt die ausgegebenen Sitzungen nach der Aggregation. Relevant sind ausgew\u00e4hlte Spalten, begrenzte Tabellensuffixe, Dry Run und maximum bytes billed. BigQuery bietet au\u00dferdem kapazit\u00e4tsbasierte Abrechnung; nicht jede Installation wird direkt nach gelesenen Bytes berechnet.<\/p>\n<h3>L\u00f6scht die GA4-Aufbewahrungsdauer BigQuery-Tabellen?<\/h3><p>Nein. BigQuery braucht eigene Ablauf- und L\u00f6schregeln. Eine ge\u00e4nderte Standardablaufzeit am Dataset gilt f\u00fcr neu angelegte Tabellen; vorhandene Tabellen ben\u00f6tigen eigene Einstellungen. Die Frist beginnt mit der Tabellenerstellung, nicht mit dem Zeitpunkt jedes einzelnen Events.<\/p>\n<h3>Funktioniert der Export ohne Rechnungskonto?<\/h3><p>Der t\u00e4gliche Export kann die BigQuery-Sandbox verwenden. Die aktuelle Sandbox-Dokumentation nennt eine lebenslange Speicherquote von 10 GiB, die durch L\u00f6schung nicht zur\u00fcckgewonnen wird, 1 TiB Abfrageverarbeitung pro Monat und automatischen Ablauf nach 60 Tagen. Streaming steht dort nicht bereit. Ein Upgrade hebt Sandbox-Beschr\u00e4nkungen auf, erfordert aber einen eigenen Kosten- und Aufbewahrungsplan.<\/p><\/div><div class=\"lw-quellen\"><h2>Quellen<\/h2><ul><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9823238?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics: BigQuery-Export einrichten<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9358801?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics: BigQuery-Export<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics: Datenschema des BigQuery-Exports<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/13644080?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics: Berichtsoberfl\u00e4chen vergleichen<\/a><\/li><li><a href=\"https:\/\/support.google.com\/analytics\/answer\/9383630?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics: Datenschwellen<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/sandbox\" target=\"_blank\" rel=\"noopener noreferrer\">Google Cloud: BigQuery-Sandbox ausprobieren<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/best-practices-costs\" target=\"_blank\" rel=\"noopener noreferrer\">Google Cloud: Kosten sch\u00e4tzen und begrenzen<\/a><\/li><li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/updating-datasets\" target=\"_blank\" rel=\"noopener noreferrer\">Google Cloud: Dataset-Eigenschaften \u00e4ndern<\/a><\/li><li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/collection\/ga4\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics 4: Entwicklungsdokumentation<\/a><\/li><\/ul><\/div>","protected":false},"excerpt":{"rendered":"<p>T\u00e4glichen GA4-Export einrichten, eingegangene Events pr\u00fcfen und beobachtete Seitenabfolgen in BigQuery abfragen. Fehlende Kennungen und unklare Reihenfolgen begrenzen die Rekonstruktion; Speicherung und Abfragen k\u00f6nnen kostenpflichtig sein.<\/p>\n","protected":false},"author":1,"featured_media":29052,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[115],"tags":[92081,92091,92094,92235,92110],"class_list":["post-10123","post","type-post","status-publish","format-standard","hentry","category-tutorials-de","tag-bigquery-de","tag-google-analytics-4-de","tag-google-cloud-de","tag-tutorial-de","tag-web-analytics-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.\" \/>\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\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-27T11:29:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-26T10:41:34+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.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\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben\",\"datePublished\":\"2026-09-27T11:29:00+00:00\",\"dateModified\":\"2026-10-26T10:41:34+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/\"},\"wordCount\":1121,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-10122-10123.png\",\"keywords\":[\"BigQuery\",\"Google Analytics 4\",\"Google Cloud\",\"Tutorial\",\"Web Analytics\"],\"articleSection\":[\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/\",\"name\":\"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-10122-10123.png\",\"datePublished\":\"2026-09-27T11:29:00+00:00\",\"dateModified\":\"2026-10-26T10:41:34+00:00\",\"description\":\"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-10122-10123.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/11\\\/flux-voll-10122-10123.png\",\"width\":1200,\"height\":630,\"caption\":\"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/tutorials-de\\\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben\"}]},{\"@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":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik","description":"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.","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\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/","og_locale":"en_US","og_type":"article","og_title":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik","og_description":"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-09-27T11:29:00+00:00","article_modified_time":"2026-10-26T10:41:34+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.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\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben","datePublished":"2026-09-27T11:29:00+00:00","dateModified":"2026-10-26T10:41:34+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/"},"wordCount":1121,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.png","keywords":["BigQuery","Google Analytics 4","Google Cloud","Tutorial","Web Analytics"],"articleSection":["Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/","name":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.png","datePublished":"2026-09-27T11:29:00+00:00","dateModified":"2026-10-26T10:41:34+00:00","description":"Den t\u00e4glichen GA4-Export nach BigQuery aktivieren, sehen, was die Oberfl\u00e4che den Zahlen antut, und die erste Abfrage auf dem verschachtelten Schema.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/11\/flux-voll-10122-10123.png","width":1200,"height":630,"caption":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/tutorials-de\/tutorial-ga4-daten-nach-bigquery-exportieren-und-die-erste-sql-abfrage-schreiben\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Tutorial: GA4-Daten nach BigQuery exportieren und die erste SQL-Abfrage schreiben"}]},{"@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\/10123","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=10123"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10123\/revisions"}],"predecessor-version":[{"id":26629,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/10123\/revisions\/26629"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/29052"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=10123"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=10123"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=10123"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}