{"id":9402,"date":"2026-08-12T19:00:00","date_gmt":"2026-08-12T17:00:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=9402"},"modified":"2026-10-09T22:41:28","modified_gmt":"2026-10-09T20:41:28","slug":"bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/","title":{"rendered":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Im Juni 2026 sind zwei \u00c4nderungen im Google-Analytics-Stack wirksam geworden. Beide sind dokumentiert, beide gelten mit Stand 10.08.2026, und keine von beiden meldet sich, w\u00e4hrend eine Pipeline l\u00e4uft. Die erste schr\u00e4nkt ein, was der BigQuery Data Transfer Service bei einem Backfill abruft. Die zweite schr\u00e4nkt ein, wor\u00fcber die Einstellung Google Signals in der Analytics-Verwaltung tats\u00e4chlich bestimmt. Verbunden sind sie nicht \u00fcber das Thema, sondern \u00fcber die Art ihres Auftretens: kein fehlgeschlagener Job, keine Exception im Log, keine Zeile in einem Monitoring-Dashboard. Die erste zeigt sich, sobald ein Backfill gestartet wird. Die zweite zeigt sich, sobald auff\u00e4llt, dass ein Schalter nicht mehr die Wirkung hat, die er zuvor hatte.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">1. Zwei \u00c4nderungen, die im Juni ohne Fehlermeldung wirksam wurden<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die meisten \u00c4nderungen in einem Datenstack melden sich von selbst. Ein Schema verschiebt sich, und eine Query schl\u00e4gt fehl. Ein Endpunkt wird abgeschaltet, und ein Client liefert einen Statuscode. Ein Kontingent wird enger, und ein Job bleibt stehen. Solche \u00c4nderungen sind laut, und gerade der L\u00e4rm macht sie billig im Umgang: Das vorhandene Monitoring greift, und jemand liest die Meldung.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die beiden Juni-\u00c4nderungen geh\u00f6ren in eine andere Kategorie. In beiden F\u00e4llen arbeitet das System weiter. Jobs laufen durch, Einstellungen lassen sich weiterhin umschalten, Dashboards werden weiterhin gerendert. Die \u00c4nderung zeigt sich allein im Inhalt der Daten oder in der Bedeutung eines Konfigurationswerts, und beides deckt das \u00fcbliche Alerting nicht ab.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>BigQuery Data Transfer Service:<\/strong> seit dem 01.06.2026 f\u00fcllen die Konnektoren f\u00fcr Google Ads, Search Ads 360 und Google Analytics 4 Backfill-L\u00e4ufe nicht mehr mit Daten, die \u00e4lter als 37 Monate sind. Die Dokumentation h\u00e4lt fest, dass solche L\u00e4ufe unvollst\u00e4ndige oder leere Ergebnisse zur\u00fcckgeben und vorhandene vollst\u00e4ndige Historie \u00fcberschreiben k\u00f6nnen.<\/li>\n<li><strong>Google Signals:<\/strong> ab dem 15.06.2026 steuern die Einstellung Google Signals in der Analytics-Verwaltung und die Google Signals API ausschlie\u00dflich die Verkn\u00fcpfung von Analytics-Daten mit Informationen aus angemeldeten Nutzerkonten f\u00fcr das Verhaltens-Reporting. Die Kontrolle \u00fcber die Daten selbst liegt beim Consent Mode, konkret beim Parameter <code>ad_storage<\/code>.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Der weitere Text behandelt beide als zwei Auspr\u00e4gungen desselben betrieblichen Problems: eine dokumentierte \u00c4nderung, deren Wirkung erst durch eine bewusste Pr\u00fcfung sichtbar wird. Die Abschnitte 2 bis 4 behandeln die Transfergrenze und eine Absicherung, die sich einem Backfill vorschalten l\u00e4sst. Die Abschnitte 5 und 6 behandeln die Signals-\u00c4nderung und eine Bestandsaufnahme, die den aktuellen Stand festh\u00e4lt, bevor er gebraucht wird.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">2. Die 37-Monats-Grenze im BigQuery Data Transfer Service<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Eintrag erschien am 06.05.2026 in den BigQuery Release Notes und wurde am 01.06.2026 wirksam. Er betrifft drei Konnektoren des BigQuery Data Transfer Service: Google Ads, Search Ads 360 und Google Analytics 4. Backfill-L\u00e4ufe dieser Konnektoren werden nicht mehr mit Daten bef\u00fcllt, die \u00e4lter als 37 Monate sind. Als Grund wird eine \u00c4nderung der Aufbewahrungsregeln auf der Seite von Google Ads genannt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">F\u00fcr den Betrieb eines Warehouse, das auf diesen Transfers aufsetzt, sind zwei Abgrenzungen der \u00c4nderung wesentlich. Bereits \u00fcbertragene Daten bleiben unangetastet \u2013 solange kein Backfill dar\u00fcber l\u00e4uft. Die 37 Monate sind ein rollierendes Fenster und kein fester Stichtag, weshalb ein Zeitraum, der im Juni noch innerhalb der Grenze lag, mit den vergehenden Monaten aus ihr herausf\u00e4llt. Eine Backfill-Definition, die vor einem Jahr in einem Runbook abgelegt und seither nicht ver\u00e4ndert wurde, \u00fcberschreitet die Grenze daher irgendwann, ohne dass sich an der Definition selbst etwas \u00e4ndert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Dokumentation l\u00e4sst mehrere Fragen offen: Gibt ein solcher Lauf einen Fehlercode oder eine Meldung aus? Warnt die Cloud Console bei einem Zeitraum jenseits der Grenze? L\u00e4sst sich der Vorgang nachtr\u00e4glich r\u00fcckg\u00e4ngig machen? Keine dieser Verhaltensweisen sollte vorausgesetzt werden. Die Absicherung muss deshalb den angefragten Zeitraum und die zur\u00fcckgegebenen Zeilen pr\u00fcfen, statt sich auf ein nicht dokumentiertes Signal des Dienstes zu verlassen.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">3. Warum ein Backfill vollst\u00e4ndige Historie ersetzen kann<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Der Kern dieser \u00c4nderung ist nicht die Grenze. Eine Begrenzung, wie weit ein Konnektor zur\u00fcckreicht, w\u00e4re eine Unbequemlichkeit mit naheliegender Umgehung: das vorhandene Archiv behalten. Der Kern ist die zweite H\u00e4lfte des dokumentierten Verhaltens \u2013 ein Lauf, der unvollst\u00e4ndige oder leere Ergebnisse zur\u00fcckgibt, kann Historie \u00fcberschreiben, die vollst\u00e4ndig war.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der Ablauf, der dorthin f\u00fchrt, ist gew\u00f6hnlich. Ein Warehouse h\u00e4lt vier Jahre Transferdaten. Eine sp\u00e4te Korrektur, eine Schemaanpassung oder eine vermutete L\u00fccke gibt den Anlass, ein \u00e4lteres Fenster erneut zu laden. Der Backfill wird mit einem Zeitraum geplant, der ganz oder teilweise weiter als 37 Monate zur\u00fcckreicht. Der Lauf wird abgeschlossen. Die Partitionen innerhalb des Fensters werden mit dem \u00fcberschrieben, was der Konnektor geliefert hat, und was der Konnektor f\u00fcr den Teil jenseits der Grenze geliefert hat, ist unvollst\u00e4ndig oder leer. Nichts in dieser Kette setzt einen Fehler in der Anfrage selbst voraus; dieselbe Anfrage h\u00e4tte im Mai funktioniert.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Darin unterscheidet sich ein erneuter Lauf von einer Erstbeladung. Eine Erstbeladung in einen leeren Zeitraum kann nur erg\u00e4nzen. Ein erneuter Lauf \u00fcber einen bestehenden Zeitraum ersetzt, und Ersetzen ist nur dann unbedenklich, wenn die Quelle mindestens so vollst\u00e4ndig ist wie das Ziel. Seit dem 1. Juni gilt diese Annahme f\u00fcr die betroffenen Konnektoren jenseits der 37-Monats-Marke nicht mehr, womit aus einem Routinevorgang einer wird, an den eine Vorbedingung geh\u00f6rt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Da die Dokumentation keinen Weg zur R\u00fccknahme beschreibt, liegt die praktische Folge darin, dass die Pr\u00fcfung vor dem Lauf stattfinden muss und eine Kopie vor dem Lauf vorliegen muss. Eine nachtr\u00e4gliche Wiederherstellung h\u00e4ngt vollst\u00e4ndig davon ab, was das Warehouse selbst aufbewahrt hat.<\/p>\n\n\n\n<figure class=\"lw-diagram\">\n<img decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/hand-backfill-de.png\" width=\"1120\" height=\"700\" loading=\"lazy\" alt=\"Dieselbe BigQuery-Zieltabelle vor und nach einem Backfill, der \u00fcber die 37-Monats-Grenze hinausreicht, wobei der \u00e4ltere Abschnitt von vollst\u00e4ndig zu leer wechselt\">\n<figcaption>Die Grenze verhindert den Lauf nicht, sie \u00e4ndert, was der Lauf schreibt. Alles links davon kommt unvollst\u00e4ndig oder leer zur\u00fcck \u2014 und landet in denselben Zeilen, in denen zuvor die vollst\u00e4ndige Historie stand.<\/figcaption>\n<\/figure>\n\n\n\n<h2 class=\"wp-block-heading\">4. Eine Absicherung vor dem Lauf: Grenze pr\u00fcfen, Zeilen z\u00e4hlen, Kopie anlegen<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die Absicherung besteht aus drei Teilen, und jeder davon ist klein genug, um einem vorhandenen Backfill-Schritt vorangestellt zu werden. Alle im Folgenden gro\u00dfgeschriebenen Bezeichner sind Platzhalter f\u00fcr Projekt, Dataset, Tabelle und Datumsspalte des Warehouse, das der Lauf ber\u00fchrt; die Spaltennamen gibt der Dienst nicht vor, sie richten sich danach, was die Zieltabelle bereits verwendet.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Der erste Teil vergleicht den angefragten Zeitraum mit der rollierenden Grenze. Er beantwortet eine einzige Frage \u2013 f\u00e4llt ein Teil dieses Fensters jenseits von 37 Monaten \u2013 und beantwortet sie aus dem Kalender heraus, nicht aus einer Antwort, die der Dienst senden mag oder auch nicht.<\/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-comment\">-- PROJECT, DATASET, TARGET_TABLE und PARTITION_DATE sind Platzhalter.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> backfill_start <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-keyword\">DEFAULT<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-01-01'<\/span>;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> backfill_end   <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-keyword\">DEFAULT<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-06-30'<\/span>;\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">DECLARE<\/span> earliest_supported <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-keyword\">DEFAULT<\/span> <span class=\"cbb-function\">DATE_SUB<\/span>(<span class=\"cbb-function\">CURRENT_DATE<\/span>(), <span class=\"cbb-keyword\">INTERVAL<\/span> <span class=\"cbb-number\">37<\/span> MONTH);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  backfill_start,\n<\/span><span class=\"cbb-line\">  backfill_end,\n<\/span><span class=\"cbb-line\">  earliest_supported,\n<\/span><span class=\"cbb-line\">  backfill_start &lt; earliest_supported <span class=\"cbb-keyword\">AS<\/span> starts_before_boundary,\n<\/span><span class=\"cbb-line\">  backfill_end   &lt; earliest_supported <span class=\"cbb-keyword\">AS<\/span> ends_before_boundary,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">DATE_DIFF<\/span>(earliest_supported, backfill_start, DAY) <span class=\"cbb-keyword\">AS<\/span> days_outside;<\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Derselbe Vergleich geh\u00f6rt in den Wrapper, der den Lauf ausl\u00f6st, damit ein Fenster au\u00dferhalb der Grenze den Job anh\u00e4lt und nicht nur eine Zeile in einer Ergebnismenge erzeugt. Ein Gate in der Shell h\u00e4lt die Entscheidung beim Scheduler statt im Warehouse.<\/p>\n\n\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"bash\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Shell<\/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-bash\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-comment\">#!\/usr\/bin\/env bash<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">set<\/span> <span class=\"cbb-attr\">-euo<\/span> pipefail\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">START=<span class=\"cbb-string\">\"2022-01-01\"<\/span>\n<\/span><span class=\"cbb-line\">END=<span class=\"cbb-string\">\"2022-06-30\"<\/span>\n<\/span><span class=\"cbb-line\">BOUNDARY=<span class=\"cbb-string\">\"$(date -u -d '37 months ago' +%F)\"<\/span>\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">if<\/span> &#91;&#91; <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$START<\/span><span class=\"cbb-string\">\"<\/span> &lt; <span class=\"cbb-string\">\"<\/span><span class=\"cbb-variable\">$BOUNDARY<\/span><span class=\"cbb-string\">\"<\/span> &#93;&#93;<span class=\"cbb-operator\">;<\/span> <span class=\"cbb-keyword\">then<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">echo<\/span> <span class=\"cbb-string\">\"range starts <\/span><span class=\"cbb-variable\">$START<\/span><span class=\"cbb-string\">, boundary is <\/span><span class=\"cbb-variable\">$BOUNDARY<\/span><span class=\"cbb-string\"> - backfill not started\"<\/span> <span class=\"cbb-operator\">&gt;<\/span>&amp;<span class=\"cbb-number\">2<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">exit<\/span> <span class=\"cbb-number\">1<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">fi<\/span>\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># wird nur erreicht, wenn das gesamte Fenster innerhalb der Grenze liegt<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># .\/run_backfill.sh \"$START\" \"$END\"<\/span><\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Der zweite Teil ist eine Zeilenz\u00e4hlung je Tag, einmal vor dem Lauf und einmal danach erhoben. Diese Z\u00e4hlung ist von keiner Meldung des Dienstes abh\u00e4ngig und macht eine Ersetzung durch leere Ergebnisse als Zahl sichtbar statt als Vermutung. Werden beide Phasen in derselben Audit-Tabelle abgelegt, bleibt der Vergleich eine einzige Query.<\/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\">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.audit.transfer_row_census`<\/span> (\n<\/span><span class=\"cbb-line\">  captured_at <span class=\"cbb-type\">TIMESTAMP<\/span>,\n<\/span><span class=\"cbb-line\">  phase <span class=\"cbb-type\">STRING<\/span>,\n<\/span><span class=\"cbb-line\">  day <span class=\"cbb-type\">DATE<\/span>,\n<\/span><span class=\"cbb-line\">  row_count <span class=\"cbb-type\">INT64<\/span>\n<\/span><span class=\"cbb-line\">);\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">INSERT<\/span> <span class=\"cbb-keyword\">INTO<\/span> <span class=\"cbb-variable\">`PROJECT.audit.transfer_row_census`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> <span class=\"cbb-function\">CURRENT_TIMESTAMP<\/span>(), <span class=\"cbb-string\">'before'<\/span>, PARTITION_DATE, <span class=\"cbb-function\">COUNT<\/span>(*)\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`PROJECT.DATASET.TARGET_TABLE`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> PARTITION_DATE <span class=\"cbb-keyword\">BETWEEN<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-01-01'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-06-30'<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> PARTITION_DATE;\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- nach dem Lauf dieselbe Anweisung mit phase = 'after', danach:<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  b.day,\n<\/span><span class=\"cbb-line\">  b.row_count <span class=\"cbb-keyword\">AS<\/span> rows_before,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">IFNULL<\/span>(a.row_count, <span class=\"cbb-number\">0<\/span>) <span class=\"cbb-keyword\">AS<\/span> rows_after,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">IFNULL<\/span>(a.row_count, <span class=\"cbb-number\">0<\/span>) - b.row_count <span class=\"cbb-keyword\">AS<\/span> delta\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`PROJECT.audit.transfer_row_census`<\/span> b\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">LEFT<\/span> <span class=\"cbb-keyword\">JOIN<\/span> <span class=\"cbb-variable\">`PROJECT.audit.transfer_row_census`<\/span> a\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">ON<\/span> a.day = b.day <span class=\"cbb-keyword\">AND<\/span> a.phase = <span class=\"cbb-string\">'after'<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> b.phase = <span class=\"cbb-string\">'before'<\/span>\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-function\">IFNULL<\/span>(a.row_count, <span class=\"cbb-number\">0<\/span>) &lt; b.row_count\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> delta;<\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Der dritte Teil ist die Kopie. Da die Dokumentation nichts \u00fcber die R\u00fccknahme eines solchen Laufs sagt, f\u00fchrt der einzig verl\u00e4ssliche Weg zur\u00fcck \u00fcber eine Kopie des betroffenen Zeitraums, die angelegt wurde, solange er noch vollst\u00e4ndig war. Eine Snapshot-Tabelle, benannt nach dem Lauf und dem Datum des Laufs, gen\u00fcgt, und sie kann verworfen werden, sobald die Z\u00e4hlung kein negatives Delta zeigt.<\/p>\n\n\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\">CREATE<\/span> <span class=\"cbb-keyword\">TABLE<\/span> <span class=\"cbb-variable\">`PROJECT.DATASET.TARGET_TABLE__pre_backfill_20260810`<\/span> <span class=\"cbb-keyword\">AS<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span> *\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`PROJECT.DATASET.TARGET_TABLE`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> PARTITION_DATE <span class=\"cbb-keyword\">BETWEEN<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-01-01'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2022-06-30'<\/span>;<\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Drei Schritte, alle auf der Seite des Warehouse, keiner davon abh\u00e4ngig von einem Signal, dessen Versand f\u00fcr den Dienst nicht dokumentiert ist. Den Wert tr\u00e4gt die Reihenfolge: Grenzpr\u00fcfung, Z\u00e4hlung, Kopie, dann der Lauf.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">5. Google Signals steuert seit dem 15. Juni weniger<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Die zweite \u00c4nderung ist im Code kleiner und in der Auslegung gr\u00f6\u00dfer. Ab dem 15.06.2026 bestimmen die Einstellung Google Signals in der Analytics-Verwaltung und die Google Signals API nur noch \u00fcber eines: ob Analytics-Daten mit Informationen aus angemeldeten Nutzerkonten f\u00fcr das Verhaltens-Reporting verkn\u00fcpft werden. Die Kontrolle \u00fcber die Daten selbst liegt nun beim Consent Mode, konkret beim Parameter <code>ad_storage<\/code>. Die Beschreibung findet sich auf der Google-Analytics-Hilfeseite 17016975, abgerufen am 10.08.2026.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die betriebliche Folge ist eine Verschiebung darin, welche Oberfl\u00e4che welche Frage beantwortet. Eine Frage nach der Verkn\u00fcpfung mit angemeldeten Nutzerkonten im Verhaltens-Reporting beantwortet die Signals-Einstellung. Eine Frage nach den zugrunde liegenden Daten beantwortet die Consent-Konfiguration auf der Erfassungsseite. Ein Konfigurationsdokument, eine interne Wiki-Seite oder eine Beschreibung f\u00fcr Kunden, die vor dem 15. Juni verfasst wurde, kann den Signals-Schalter weiterhin als zust\u00e4ndig f\u00fcr die zweite Frage darstellen, und nichts in der Oberfl\u00e4che kennzeichnet eine solche Beschreibung als \u00fcberholt.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Mehreres an dieser \u00c4nderung ist nicht dokumentiert und sollte eher als offen benannt als gesch\u00e4tzt werden. Die Hilfeseite tr\u00e4gt kein Ver\u00f6ffentlichungsdatum, weshalb sich der genaue Zeitpunkt der \u00dcberarbeitung nicht aus der Seite selbst ablesen l\u00e4sst. Die Seite nennt keine Volumeneffekte, weshalb jede Aussage dar\u00fcber, wie sich Reporting-Zahlen bewegen, von der Quelle nicht gedeckt ist. Und sie sagt nichts zu bestehenden Audiences, weshalb dort auch der Status von Audiences offenbleibt, die entstanden sind, als die Einstellung einen weiteren Geltungsbereich hatte. Jeder dieser Punkte ist eine Frage an die jeweiligen Properties und keine, die die Dokumentation beantwortet.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">6. Eine Bestandsaufnahme je Property, und was offenbleibt<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Ohne den dokumentierten Boden zu verlassen, bleibt eine Bestandsaufnahme: den aktuellen Signals-Stand je Property festhalten, den Nachweis aufbewahren und die <code>ad_storage<\/code>-Consent-Raten getrennt davon im Reporting pr\u00fcfen. Daraus entsteht eine datierte Ausgangslage, und genau die braucht jede sp\u00e4tere Frage nach einem Unterschied.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Die Google Signals API wird in der Dokumentation als eine der beiden Steuerungsoberfl\u00e4chen genannt, doch Endpunktnamen, Request-Felder oder Response-Schemata sind hier nicht belegt. Das folgende Skript h\u00e4lt den API-Aufruf daher hinter einer Platzhalterfunktion, die anhand der API-Referenz der eingesetzten Client-Bibliothek zu erg\u00e4nzen ist; ausgeschrieben ist der Teil, der die Persistenz und den Abgleich \u00fcbernimmt, und dort liegt der Wert der Bestandsaufnahme.<\/p>\n\n\n<figure style=\"--cbb-digits:2\" class=\"cbb cbb--wrap cbb--numbers wp-block-code-beautifier-block-code\" data-lang=\"python\"><figcaption class=\"cbb-head\"><span class=\"cbb-lang\">Python<\/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-python\" style=\"counter-reset:cbb-line 0;\"><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> csv\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">import<\/span> datetime\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># Platzhalter: umgesetzt gegen die Google Signals API mit der<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\"># eingesetzten Client-Bibliothek. Gibt das Statusfeld zurueck, das die API bereitstellt.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">def<\/span> <span class=\"cbb-function\">fetch_signals_state<\/span>(property_id: str):\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">raise<\/span> <span class=\"cbb-function\">NotImplementedError<\/span>(<span class=\"cbb-string\">\"fill in against the API reference\"<\/span>)\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">PROPERTIES = &#91;<span class=\"cbb-string\">\"PROPERTY_ID_1\"<\/span>, <span class=\"cbb-string\">\"PROPERTY_ID_2\"<\/span>&#93;   <span class=\"cbb-comment\"># Platzhalter<\/span>\n<\/span><span class=\"cbb-line\">OUT = <span class=\"cbb-string\">\"signals_inventory.csv\"<\/span>\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\">captured_at = datetime.datetime.<span class=\"cbb-function\">now<\/span>(datetime.timezone.utc).<span class=\"cbb-function\">isoformat<\/span>()\n<\/span><span class=\"cbb-line\">\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">with<\/span> <span class=\"cbb-function\">open<\/span>(OUT, <span class=\"cbb-string\">\"a\"<\/span>, newline=<span class=\"cbb-string\">\"\"<\/span>, encoding=<span class=\"cbb-string\">\"utf-8\"<\/span>) <span class=\"cbb-keyword\">as<\/span> fh:\n<\/span><span class=\"cbb-line\">    writer = csv.<span class=\"cbb-function\">writer<\/span>(fh)\n<\/span><span class=\"cbb-line\">    <span class=\"cbb-keyword\">for<\/span> property_id <span class=\"cbb-keyword\">in<\/span> PROPERTIES:\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">try<\/span>:\n<\/span><span class=\"cbb-line\">            state = <span class=\"cbb-function\">fetch_signals_state<\/span>(property_id)\n<\/span><span class=\"cbb-line\">            writer.<span class=\"cbb-function\">writerow<\/span>(&#91;captured_at, property_id, state, <span class=\"cbb-string\">\"\"<\/span>&#93;)\n<\/span><span class=\"cbb-line\">        <span class=\"cbb-keyword\">except<\/span> Exception <span class=\"cbb-keyword\">as<\/span> exc:                  <span class=\"cbb-comment\"># protokolliert, nicht verschluckt<\/span>\n<\/span><span class=\"cbb-line\">            writer.<span class=\"cbb-function\">writerow<\/span>(&#91;captured_at, property_id, <span class=\"cbb-string\">\"\"<\/span>, <span class=\"cbb-function\">repr<\/span>(exc)&#93;)<\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Die zweite H\u00e4lfte der Bestandsaufnahme ist die Consent-Seite. Wie der <code>ad_storage<\/code>-Status gespeichert wird, unterscheidet sich je nach Setup \u2013 er kann in einer Export-Tabelle liegen, in einem Log auf der Erfassungsseite oder in einer Tabelle, die die Consent-Plattform pflegt \u2013, weshalb die Tabellen- und Spaltennamen unten Platzhalter f\u00fcr das sind, was das Warehouse bereits vorh\u00e4lt. Die Query liefert eine Tagesrate, und in dieser Form w\u00e4re eine Verschiebung \u00fcber die Juni-Grenze hinweg \u00fcberhaupt ablesbar.<\/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-comment\">-- CONSENT_TABLE, DAY_COLUMN und AD_STORAGE_COLUMN sind Platzhalter<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-comment\">-- fuer die Spalten, in denen das Warehouse den Consent-Status festhaelt.<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">SELECT<\/span>\n<\/span><span class=\"cbb-line\">  DAY_COLUMN <span class=\"cbb-keyword\">AS<\/span> day,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNTIF<\/span>(AD_STORAGE_COLUMN = <span class=\"cbb-string\">'granted'<\/span>) <span class=\"cbb-keyword\">AS<\/span> granted,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">COUNT<\/span>(*) <span class=\"cbb-keyword\">AS<\/span> total,\n<\/span><span class=\"cbb-line\">  <span class=\"cbb-function\">SAFE_DIVIDE<\/span>(<span class=\"cbb-function\">COUNTIF<\/span>(AD_STORAGE_COLUMN = <span class=\"cbb-string\">'granted'<\/span>), <span class=\"cbb-function\">COUNT<\/span>(*)) <span class=\"cbb-keyword\">AS<\/span> granted_rate\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">FROM<\/span> <span class=\"cbb-variable\">`PROJECT.DATASET.CONSENT_TABLE`<\/span>\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">WHERE<\/span> DAY_COLUMN <span class=\"cbb-keyword\">BETWEEN<\/span> <span class=\"cbb-type\">DATE<\/span> <span class=\"cbb-string\">'2026-05-01'<\/span> <span class=\"cbb-keyword\">AND<\/span> <span class=\"cbb-function\">CURRENT_DATE<\/span>()\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">GROUP<\/span> <span class=\"cbb-keyword\">BY<\/span> day\n<\/span><span class=\"cbb-line\"><span class=\"cbb-keyword\">ORDER<\/span> <span class=\"cbb-keyword\">BY<\/span> day;<\/span><\/code><\/pre><\/figure>\n\n\n<p class=\"wp-block-paragraph\">Die Bestandsaufnahme h\u00e4lt den Zustand fest, erkl\u00e4rt aber keine Ver\u00e4nderungen in den Zahlen. \u00c4ndert sich eine Rate \u00fcber den Juni hinweg, kann das an der Consent-Konfiguration, der Saisonalit\u00e4t, der Zusammensetzung des Traffics oder einem Release der Website liegen. Die Dokumentation nennt keine Volumeneffekte; die Ver\u00e4nderung der Signals-\u00c4nderung zuzuschreiben, w\u00e4re deshalb nicht durch die Quelle gedeckt. Der datierte Stand je Property erm\u00f6glicht sp\u00e4tere Vergleiche und trennt dabei zwei Fragen: Was steuert die Einstellung, und was zeigen die Daten?<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zusammenfassung<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Transfergrenze:<\/strong> seit dem 01.06.2026 bef\u00fcllen die Konnektoren des BigQuery Data Transfer Service f\u00fcr Google Ads, Search Ads 360 und Google Analytics 4 Backfill-L\u00e4ufe nicht mehr mit Daten, die \u00e4lter als 37 Monate sind. Als Grund werden ge\u00e4nderte Aufbewahrungsregeln bei Google Ads genannt.<\/li>\n<li><strong>Der folgenreiche Teil:<\/strong> Die Dokumentation h\u00e4lt fest, dass solche L\u00e4ufe unvollst\u00e4ndige oder leere Ergebnisse zur\u00fcckgeben und vorhandene vollst\u00e4ndige Historie \u00fcberschreiben k\u00f6nnen. Bereits \u00fcbertragene Daten bleiben unangetastet, solange kein Backfill dar\u00fcber l\u00e4uft.<\/li>\n<li><strong>Nicht dokumentiert:<\/strong> welcher Fehlercode oder welche Meldung erscheint, ob die Oberfl\u00e4che warnt und ob sich der Vorgang r\u00fcckg\u00e4ngig machen l\u00e4sst. Eine Absicherung st\u00fctzt sich deshalb auf den angefragten Zeitraum, eine Zeilenz\u00e4hlung vor und nach dem Lauf sowie eine zuvor angelegte Kopie.<\/li>\n<li><strong>Geltungsbereich von Signals:<\/strong> ab dem 15.06.2026 steuern die Signals-Einstellung und die Google Signals API nur noch die Verkn\u00fcpfung von Analytics-Daten mit Informationen aus angemeldeten Nutzerkonten f\u00fcr das Verhaltens-Reporting; die Kontrolle \u00fcber die Daten selbst liegt beim Consent Mode und bei <code>ad_storage<\/code>.<\/li>\n<li><strong>Offen auf dieser Seite:<\/strong> Die Hilfeseite tr\u00e4gt kein Ver\u00f6ffentlichungsdatum, nennt keine Volumeneffekte und sagt nichts zu bestehenden Audiences. Eine datierte Bestandsaufnahme je Property h\u00e4lt den Stand fest; sie erkl\u00e4rt keine Bewegungen in den Zahlen.<\/li>\n<\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Beide \u00c4nderungen waren dokumentiert, bevor sie wirksam wurden, und beide bleiben im Tagesbetrieb unsichtbar, bis eine bestimmte Handlung oder eine bestimmte Frage sie an die Oberfl\u00e4che bringt. Der praktische Unterschied liegt im Zeitpunkt, an dem sich eine Pr\u00fcfung auszahlt: bei der Transfergrenze ist es der Moment vor dem Start eines Backfills, bei Google Signals der Moment, in dem eine Konfigurationsbeschreibung niedergeschrieben und datiert wird.<\/p>\n\n\n<div class=\"lw-faq\">\n<h2>Fragen und Antworten<\/h2>\n\n<h3>Reicht die Zeilenz\u00e4hlung als Nachweis, wenn die Zieltabelle partitioniert ist und ein Backfill ganze Partitionen neu schreibt?<\/h3>\n<p>F\u00fcr die Frage, ob etwas verloren gegangen ist, reicht sie: Eine leer oder unvollst\u00e4ndig geschriebene Partition zeigt sich als negatives Delta gegen\u00fcber vorher, und genau das soll die Z\u00e4hlung sichtbar machen.<\/p>\n<p>Was sie nicht beantwortet, ist die andere Richtung: ob eine Partition \u00fcberhaupt angefasst wurde. Eine Partition mit identischer Zeilenzahl vor und nach dem Lauf kann unber\u00fchrt geblieben oder neu geschrieben worden sein. F\u00fcr die Kostenrechnung und f\u00fcr die Frage, was der Lauf tats\u00e4chlich getan hat, ist das ein Unterschied.<\/p>\n<p>Daf\u00fcr lohnt eine zweite, sehr kleine Abfrage auf die Systemtabellen: der Zeitpunkt der letzten \u00c4nderung je Partition, vor und nach dem Lauf, in BigQuery zu finden in <code>INFORMATION_SCHEMA.PARTITIONS<\/code> unter <code>last_modified_time<\/code>. Zusammen mit der Zeilenz\u00e4hlung ergibt das die beiden Aussagen, auf die es ankommt: welche Partitionen ber\u00fchrt wurden und welche davon dabei Zeilen verloren haben. Beides kostet zwei Abfragen und erspart sp\u00e4tere Diskussionen dar\u00fcber, was der Backfill angerichtet hat.<\/p>\n<\/div>\n\n<div class=\"lw-quellen\">\n<h2>Quellen<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery documentation<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery Export schema reference<\/a><\/li>\n<\/ul>\n<\/div>","protected":false},"excerpt":{"rendered":"<p>Seit Juni 2026 kann ein Backfill im BigQuery Data Transfer Service vollst\u00e4ndige Historie mit leeren Ergebnissen \u00fcberschreiben, und die Einstellung Google Signals steuert weniger als zuvor.<\/p>\n","protected":false},"author":1,"featured_media":15129,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[10],"tags":[92081,92088,92091,92094],"class_list":["post-9402","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-de","tag-bigquery-de","tag-data-quality-de","tag-google-analytics-4-de","tag-google-cloud-de"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.\" \/>\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\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-12T17:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-09T20:41:28+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1200\" \/>\n\t<meta property=\"og:image:height\" content=\"630\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"Lukas Wojcik\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Lukas Wojcik\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"14 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\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026\",\"datePublished\":\"2026-08-12T17:00:00+00:00\",\"dateModified\":\"2026-10-09T20:41:28+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/\"},\"wordCount\":2268,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9402-bigquery-backfill-grenze-google-sign-n.png\",\"keywords\":[\"BigQuery\",\"Data Quality\",\"Google Analytics 4\",\"Google Cloud\"],\"articleSection\":[\"Digital Analytics\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/\",\"name\":\"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9402-bigquery-backfill-grenze-google-sign-n.png\",\"datePublished\":\"2026-08-12T17:00:00+00:00\",\"dateModified\":\"2026-10-09T20:41:28+00:00\",\"description\":\"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9402-bigquery-backfill-grenze-google-sign-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9402-bigquery-backfill-grenze-google-sign-n.png\",\"width\":1200,\"height\":630,\"caption\":\"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/de\\\/digital-analytics-de\\\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026\"}]},{\"@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":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik","description":"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.","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\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/","og_locale":"en_US","og_type":"article","og_title":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik","og_description":"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-12T17:00:00+00:00","article_modified_time":"2026-10-09T20:41:28+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026","datePublished":"2026-08-12T17:00:00+00:00","dateModified":"2026-10-09T20:41:28+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/"},"wordCount":2268,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png","keywords":["BigQuery","Data Quality","Google Analytics 4","Google Cloud"],"articleSection":["Digital Analytics"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/","url":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/","name":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026 | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png","datePublished":"2026-08-12T17:00:00+00:00","dateModified":"2026-10-09T20:41:28+00:00","description":"BigQuery-Backfills und Google Signals: Zeitgrenzen, leere Importergebnisse und Pr\u00fcfungen vor dem \u00dcberschreiben vorhandener Historie.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9402-bigquery-backfill-grenze-google-sign-n.png","width":1200,"height":630,"caption":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/de\/digital-analytics-de\/bigquery-backfill-grenze-und-google-signals-reichweite-zwei-ga4-anderungen\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"BigQuery-Backfill-Grenze und Google-Signals-Reichweite: Zwei GA4-\u00c4nderungen aus dem Juni 2026"}]},{"@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\/9402","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=9402"}],"version-history":[{"count":4,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9402\/revisions"}],"predecessor-version":[{"id":21798,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9402\/revisions\/21798"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15129"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=9402"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=9402"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=9402"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}