{"id":9403,"date":"2026-08-12T20:00:00","date_gmt":"2026-08-12T18:00:00","guid":{"rendered":"https:\/\/www.lukaswojcik.com\/blog\/?p=9403"},"modified":"2026-10-24T04:16:24","modified_gmt":"2026-10-24T02:16:24","slug":"limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany","status":"publish","type":"post","link":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/","title":{"rendered":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026"},"content":{"rendered":"<h2>Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026<\/h2>\n<p>Dwie zmiany z czerwca 2026 r. wymagaj\u0105 osobnych kontroli. BigQuery Data Transfer Service ogranicza historyczne ponowne pobieranie danych kilku konektor\u00f3w raportowych do 37 miesi\u0119cy. Google Signals steruje obecnie w\u0119\u017cszym powi\u0105zaniem danych Analytics, natomiast Ads Consent Mode reguluje odpowiednie zbieranie i u\u017cycie danych reklamowych. Zielony status dashboardu nie wystarcza do oceny tych zmian.<\/p>\n<h2>1. Limit backfill dotyczy konektor\u00f3w raportowych<\/h2>\n<p>Backfill ponownie \u0142aduje okres historyczny. Informacja o wydaniu BigQuery z 6 maja 2026 r. zapowiedzia\u0142a, \u017ce od 1 czerwca 2026 r. konektory Data Transfer Service dla Google Ads, Search Ads 360 i Google Analytics 4 przestaj\u0105 uzupe\u0142nia\u0107 backfill starszy ni\u017c 37 miesi\u0119cy. Dotyczy to tych konektor\u00f3w, w tym konektora raportowych danych GA4. Nie jest to nowy limit retencji natywnego eksportu GA4 events_* ani automatyczne usuwanie istniej\u0105cej historii BigQuery.<\/p>\n<p>Aktualny rejestr zmian rozr\u00f3\u017cnia wyniki: Google Ads i Search Ads 360 odrzucaj\u0105 dzienne uzupe\u0142nienia starsze ni\u017c 37 miesi\u0119cy b\u0142\u0119dem. Konektor Analytics ostrzega natomiast przed nadpisaniem historycznych partycji cz\u0119\u015bciowymi lub pustymi wynikami. <\/p>\n<p>Ograniczenie dziennych transfer\u00f3w nie dotyczy jednak wszystkich raport\u00f3w Google Ads. Dane miesi\u0119czne, kwartalne i roczne pozostaj\u0105 dost\u0119pne do 11 lat; wska\u017aniki zasi\u0119gu i cz\u0119stotliwo\u015bci maj\u0105 limit trzech lat. <\/p>\n<p>Bezpo\u015brednie zapytania do Google Ads API obejmuj\u0105ce okres sprzed ponad 37 miesi\u0119cy wymagaj\u0105 co najmniej miesi\u0119cznej segmentacji dat lub braku segmentacji oraz zakresu obejmuj\u0105cego pe\u0142ne miesi\u0105ce. Agregaty nie pozwalaj\u0105 odtworzy\u0107 szczeg\u00f3\u0142\u00f3w dziennych. Zakresy API odnosz\u0105 si\u0119 do <code>customer.time_zone<\/code> konta emituj\u0105cego reklamy. Poni\u017cszy przyk\u0142ad UTC przedstawia obliczenia kalendarzowe i wymaga dostosowania do konkretnego konektora oraz zasad harmonogramu; nie stanowi kompletnego walidatora dowolnych zapyta\u0144 Google Ads API.<\/p>\n<figure class=\"lw-diagram\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/diagrams\/dia-9403-review-20261024.png\" width=\"1120\" height=\"580\" alt=\"Przed backfillem: kontrola zakresu i zachowanie migawki. Po zako\u0144czeniu: por\u00f3wnanie liczb i tre\u015bci. Nowy limit nie usuwa automatycznie istniej\u0105cej historii.\"><figcaption>Przed backfillem: kontrola zakresu i zachowanie migawki. Po zako\u0144czeniu: por\u00f3wnanie liczb i tre\u015bci. Nowy limit nie usuwa automatycznie istniej\u0105cej historii.<\/figcaption><\/figure>\n<h2>2. Kontrola dat kalendarzowych przed zaplanowaniem<\/h2>\n<p>Granica przesuwa si\u0119 wraz z dat\u0105 planowania. Zapisany zakres wymaga ponownej kontroli bezpo\u015brednio przed wykonaniem, szczeg\u00f3lnie po op\u00f3\u017anieniu lub ponowieniu zadania. Poni\u017csza bramka w Pythonie u\u017cywa UTC i ogranicza ko\u0144ce miesi\u0119cy do ostatniego prawid\u0142owego dnia, podobnie jak BigQuery DATE_SUB z MONTH. Na przyk\u0142ad 31 marca 2026 r. minus 37 miesi\u0119cy daje 28 lutego 2023 r. GNU date mo\u017ce zamiast tego przenie\u015b\u0107 nieistniej\u0105c\u0105 dat\u0119 lutow\u0105 do marca; poprzednie obliczenie pow\u0142oki nie jest r\u00f3wnowa\u017cne.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>#!\/usr\/bin\/env python3\nimport calendar\nfrom datetime import date, datetime, timezone\nimport json\nimport re\nimport sys\n\ndef parse_day(value):\n    if not re.fullmatch(r&quot;[0-9]{4}-[0-9]{2}-[0-9]{2}&quot;, value):\n        raise ValueError(&#x27;Expected YYYY-MM-DD&#x27;)\n    return date.fromisoformat(value)\n\ndef months_before(day, months):\n    month_index = day.year * 12 + day.month - 1 - months\n    year, zero_month = divmod(month_index, 12)\n    month = zero_month + 1\n    return date(year, month, min(day.day, calendar.monthrange(year, month)[1]))\n\ndef validate(start_text, end_text, as_of):\n    start, end = parse_day(start_text), parse_day(end_text)\n    boundary = months_before(as_of, 37)\n    if start &gt; end:\n        raise ValueError(&#x27;Start is after end&#x27;)\n    if end &gt; as_of:\n        raise ValueError(&#x27;End is in the future&#x27;)\n    if start &lt; boundary:\n        raise ValueError(f&#x27;Start precedes 37-month boundary {boundary}&#x27;)\n    return {&#x27;start&#x27;: str(start), &#x27;end&#x27;: str(end),\n            &#x27;as_of_utc&#x27;: str(as_of), &#x27;boundary&#x27;: str(boundary)}\n\ndef main():\n    if len(sys.argv) != 3:\n        print(&#x27;Usage: guard.py START END&#x27;, file=sys.stderr)\n        return 2\n    try:\n        result = validate(sys.argv[1], sys.argv[2], datetime.now(timezone.utc).date())\n    except ValueError as exc:\n        print(f&#x27;BLOCKED: {exc}&#x27;, file=sys.stderr)\n        return 1\n    print(json.dumps(result))\n    return 0\n\nif __name__ == &#x27;__main__&#x27;:\n    sys.exit(main())\n<\/code><\/pre>\n<p>Przyk\u0142ad sprawdza pe\u0142ne daty YYYY-MM-DD, pocz\u0105tek niep\u00f3\u017aniejszy od ko\u0144ca, brak przysz\u0142ego ko\u0144ca i granic\u0119 37 miesi\u0119cy. Wypisuje dozwolony zakres, ale nie uruchamia transferu. Harmonogram musi przerwa\u0107 dzia\u0142anie przy niezerowym kodzie i przekaza\u0107 do w\u0142a\u015bciwego polecenia dok\u0142adnie sprawdzone daty. Za\u0142o\u017cenie UTC i regu\u0142y planowania konkretnego konta wymagaj\u0105 weryfikacji blisko granicy; dodatkowy bufor mo\u017ce wykluczy\u0107 przypadki graniczne. Bramka dotyczy wskazanych konektor\u00f3w, a nie wszystkich rodzaj\u00f3w backfillu.<\/p>\n<h2>3. Osobny punkt odtworzenia dla ka\u017cdego przebiegu<\/h2>\n<p>Przed ponownym \u0142adowaniem nadpisuj\u0105cym dane potrzebne s\u0105 jednoznacznie okre\u015blone cel i kopia. Poni\u017csze polecenie tworzy migawk\u0119 tabeli tylko do odczytu. CREATE TABLE AS SELECT tworzy\u0142oby natomiast materializowan\u0105 kopi\u0119. PROJECT, DATASET, TARGET_TABLE i RUN_ID s\u0105 symbolami zast\u0119pczymi; ka\u017cdy przebieg wymaga nowego RUN_ID. Migawka i \u017ar\u00f3d\u0142o musz\u0105 znajdowa\u0107 si\u0119 w tej samej lokalizacji. Udane zako\u0144czenie zadania kopii jest warunkiem rozpocz\u0119cia transferu.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>-- Replace identifiers; use a fresh RUN_ID for every backfill.\n-- Keep snapshot and source in the same location.\nCREATE SNAPSHOT TABLE `PROJECT.audit.TARGET__RUN_ID`\nCLONE `PROJECT.DATASET.TARGET_TABLE`;\n<\/code><\/pre>\n<p>Migawka obejmuje tabel\u0119 \u017ar\u00f3d\u0142ow\u0105, a nie zakres wybrany przez WHERE. Dane w buforze strumieniowym i pozosta\u0142e ograniczenia migawek wymagaj\u0105 kontroli dla konkretnej tabeli. Inne zapisy do badanego zakresu musz\u0105 zosta\u0107 wstrzymane lub uwzgl\u0119dnione podczas por\u00f3wnania. Istniej\u0105cych nazw migawek nie nale\u017cy nadpisywa\u0107. Odtworzenie do osobnej tabeli powinno zosta\u0107 prze\u0107wiczone przed rzeczywist\u0105 awari\u0105.<\/p>\n<h2>4. Por\u00f3wnanie wszystkich dni i kontrola tre\u015bci<\/h2>\n<p>Po zako\u0144czeniu transferu zapytanie por\u00f3wnuje konkretn\u0105 migawk\u0119 z obecn\u0105 tabel\u0105. Pe\u0142na lista dat obejmuje r\u00f3wnie\u017c puste dni. Brak tabeli powoduje b\u0142\u0105d zapytania zamiast zera wierszy; brak grupy dla dnia w istniej\u0105cej tabeli rzeczywi\u015bcie oznacza zero w tym zapytaniu. Przyk\u0142ad zak\u0142ada kolumn\u0119 PARTITION_DATE typu DATE. Partycjonowanie wed\u0142ug czasu przyj\u0119cia lub znacznika czasu wymaga jawnie dopasowanego wyra\u017cenia daty.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>-- Run only after the transfer has completed successfully.\n-- @start_day and @end_day are DATE parameters from the validated range.\n-- PARTITION_DATE is a DATE column in this example.\nWITH days AS (\n  SELECT day FROM UNNEST(GENERATE_DATE_ARRAY(@start_day, @end_day)) AS day\n), before_counts AS (\n  SELECT PARTITION_DATE AS day, COUNT(*) AS n\n  FROM `PROJECT.audit.TARGET__RUN_ID`\n  WHERE PARTITION_DATE BETWEEN @start_day AND @end_day\n  GROUP BY day\n), after_counts AS (\n  SELECT PARTITION_DATE AS day, COUNT(*) AS n\n  FROM `PROJECT.DATASET.TARGET_TABLE`\n  WHERE PARTITION_DATE BETWEEN @start_day AND @end_day\n  GROUP BY day\n)\nSELECT d.day,\n       COALESCE(b.n, 0) AS rows_before,\n       COALESCE(a.n, 0) AS rows_after,\n       COALESCE(a.n, 0) - COALESCE(b.n, 0) AS delta,\n       CASE\n         WHEN COALESCE(b.n, 0) = 0 AND COALESCE(a.n, 0) = 0 THEN &#x27;BOTH_EMPTY&#x27;\n         WHEN COALESCE(a.n, 0) &lt; COALESCE(b.n, 0) THEN &#x27;FEWER_ROWS&#x27;\n         WHEN COALESCE(a.n, 0) &gt; COALESCE(b.n, 0) THEN &#x27;MORE_ROWS&#x27;\n         ELSE &#x27;SAME_COUNT_REQUIRES_CONTENT_CHECK&#x27;\n       END AS check_result\nFROM days d\nLEFT JOIN before_counts b USING (day)\nLEFT JOIN after_counts a USING (day)\nORDER BY d.day;\n<\/code><\/pre>\n<p>Mniejsza liczba wierszy wymaga wyja\u015bnienia; wi\u0119ksza liczba r\u00f3wnie\u017c jest zmian\u0105, a nie automatycznym sukcesem. R\u00f3wne liczby nie dowodz\u0105 identycznej tre\u015bci: usuni\u0119te rekordy i nowe duplikaty mog\u0105 wzajemnie wyr\u00f3wna\u0107 wynik. Nadal potrzebne s\u0105 kontrole kluczy biznesowych, istotnych metryk i wybranych pojedynczych rekord\u00f3w. Migawka powinna pozosta\u0107 do zako\u0144czenia walidacji i przewidzianego okna odtworzenia, zamiast znika\u0107 tylko dlatego, \u017ce liczba wierszy nie spad\u0142a.<\/p>\n<h2>5. Google Signals i Consent Mode steruj\u0105 r\u00f3\u017cnymi elementami<\/h2>\n<p>Zgodnie z komunikatem Google o kontrolach danych od 15 czerwca 2026 r. ustawienie Signals w administracji Analytics i odpowiednie API steruj\u0105 wy\u0142\u0105cznie powi\u0105zaniem danych Analytics z informacjami o zalogowanych u\u017cytkownikach na potrzeby raportowania zachowa\u0144. Powi\u0105zana zmiana przenosi kontrol\u0119 cookies i identyfikator\u00f3w Google Ads zbieranych przez tag lub SDK Analytics do Ads Consent Mode. Dotyczy to tego zakresu danych reklamowych, a nie wszystkich danych Analytics.<\/p>\n<p>Typy zg\u00f3d pozostaj\u0105 osobne: ad_storage dotyczy reklamowych cookies lub identyfikator\u00f3w urz\u0105dze\u0144; analytics_storage dotyczy przechowywania analitycznego; ad_user_data dotyczy wysy\u0142ania danych u\u017cytkownik\u00f3w do reklamy internetowej; ad_personalization steruje reklam\u0105 spersonalizowan\u0105. Ustawienie Signals nie zast\u0119puje tych sygna\u0142\u00f3w. W zale\u017cno\u015bci od wdro\u017cenia podstawowego lub zaawansowanego odmowa przechowywania mo\u017ce nadal wsp\u00f3\u0142istnie\u0107 z pingami pomiarowymi bez cookies. Warto\u015b\u0107 denied nie oznacza uniwersalnie braku wszystkich \u017c\u0105da\u0144 sieciowych.<\/p>\n<h2>6. Osobny zapis ustawie\u0144 i dowod\u00f3w pomiarowych<\/h2>\n<p>Inwentaryzacja dla us\u0142ugi mo\u017ce zapisywa\u0107 czas pobrania, identyfikator us\u0142ugi, stan Signals i \u017ar\u00f3d\u0142o obserwacji. Udokumentowane \u017c\u0105danie Admin API tylko do odczytu wymaga wa\u017cnego access tokena, zakresu analytics.readonly i dost\u0119pu do us\u0142ugi. PROPERTY_ID oraz ACCESS_TOKEN s\u0105 symbolami zast\u0119pczymi; \u017c\u0105danie GET nie zmienia ustawienia.<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>GET \/v1alpha\/properties\/PROPERTY_ID\/googleSignalsSettings HTTP\/1.1\nHost: analyticsadmin.googleapis.com\nAuthorization: Bearer ACCESS_TOKEN\nAccept: application\/json\n<\/code><\/pre>\n<p>Odpowied\u017a ilustracyjna, a nie odczyt rzeczywistej us\u0142ugi:<\/p>\n<pre class=\"wp-block-code-beautifier-block-code\"><code>{\n  &quot;name&quot;: &quot;properties\/123456789\/googleSignalsSettings&quot;,\n  &quot;state&quot;: &quot;GOOGLE_SIGNALS_ENABLED&quot;,\n  &quot;consent&quot;: &quot;GOOGLE_SIGNALS_CONSENT_CONSENTED&quot;\n}\n<\/code><\/pre>\n<p>Pole consent tego zasobu oznacza akceptacj\u0119 warunk\u00f3w Google Signals, a nie zgod\u0119 odwiedzaj\u0105cego witryn\u0119. Brak stanu lub warto\u015b\u0107 unspecified nie potwierdzaj\u0105 w\u0142\u0105czenia Signals. Nieudane \u017c\u0105dania musz\u0105 pozosta\u0107 widoczne jako b\u0142\u0119dy; zaplanowana inwentaryzacja nie powinna jedynie dopisa\u0107 b\u0142\u0119du i zg\u0142osi\u0107 sukcesu. Por\u00f3wnanie wymaga dw\u00f3ch udanych, datowanych obserwacji tej samej us\u0142ugi. Ten szablon \u017c\u0105dania nie implementuje automatycznej inwentaryzacji ani por\u00f3wnywania zmian.<\/p>\n<p>Wska\u017aniki zg\u00f3d wymagaj\u0105 osobnej definicji jednostki: zdarzenia, sesje i pojedyncze decyzje o zgodzie daj\u0105 r\u00f3\u017cne wyniki. W natywnym eksporcie GA4 pole privacy_info.ads_storage u\u017cywa Yes, No i Unset, a nie granted\/denied. Nieznane warto\u015bci nale\u017c\u0105 do osobnej kategorii. Zmiana wska\u017anika mo\u017ce wynika\u0107 ze struktury ruchu, zmian bannera lub wdro\u017ce\u0144; sam zwi\u0105zek czasowy z czerwcem nie dowodzi wp\u0142ywu Signals.<\/p>\n<div class=\"lw-faq\">\n<h2>Pytania i odpowiedzi<\/h2>\n<h3>Czy time travel mo\u017ce zast\u0105pi\u0107 kopi\u0119?<\/h3>\n<p>Time travel w BigQuery mo\u017ce umo\u017cliwi\u0107 odtworzenie w skonfigurowanym oknie: domy\u015blnie siedem dni, z mo\u017cliwo\u015bci\u0105 ustawienia od dw\u00f3ch do siedmiu dni. Migawka mo\u017ce zachowa\u0107 punkt odtworzenia d\u0142u\u017cej. Koszty przechowywania migawki mog\u0105 wzrosn\u0105\u0107 po zmianie lub usuni\u0119ciu blok\u00f3w \u017ar\u00f3d\u0142owych; ma\u0142a zmiana logiczna mo\u017ce dotyczy\u0107 wi\u0119kszych blok\u00f3w fizycznych. Nie nale\u017cy zak\u0142ada\u0107 ani stale niskiego kosztu, ani nieograniczonego odtwarzania wstecz.<\/p>\n<h3>Czy niezmieniony czas modyfikacji partycji dowodzi braku zmian danych?<\/h3>\n<p>Nie. Metadane INFORMATION_SCHEMA.PARTITIONS zapewniaj\u0105 przydatny kontekst, ale cz\u0119\u015b\u0107 zmian, w tym usuwanie rekord\u00f3w, mo\u017ce nie zosta\u0107 odzwierciedlona w last_modified_time. Zliczenia, kontrole tre\u015bci i rzeczywisty punkt odtworzenia s\u0142u\u017c\u0105 r\u00f3\u017cnym celom. Pojedyncze pole metadanych nie dowodzi kompletno\u015bci.<\/p>\n<\/div>\n<div class=\"lw-quellen\">\n<h2>\u0179r\u00f3d\u0142a<\/h2>\n<ul>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/release-notes\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery release notes<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/transfer-changes?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery transfer changes<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/reference\/standard-sql\/date_functions\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery date functions<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/table-snapshots-intro\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery table snapshots<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/time-travel\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery time travel<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/17016975?hl=en-SG\" target=\"_blank\" rel=\"noopener noreferrer\">Google Analytics data controls<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/tag-platform\/security\/concepts\/consent-mode\" target=\"_blank\" rel=\"noopener noreferrer\">Consent Mode<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/config\/admin\/v1\/rest\/v1alpha\/properties\/getGoogleSignalsSettings\" target=\"_blank\" rel=\"noopener noreferrer\">Admin API: getGoogleSignalsSettings<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/analytics\/devguides\/config\/admin\/v1\/rest\/v1alpha\/GoogleSignalsSettings\" target=\"_blank\" rel=\"noopener noreferrer\">GoogleSignalsSettings<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\/information-schema-partitions\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery PARTITIONS<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/analytics\/answer\/7029846\" target=\"_blank\" rel=\"noopener noreferrer\">GA4 BigQuery export schema<\/a><\/li>\n<li><a href=\"https:\/\/docs.cloud.google.com\/bigquery\/docs\" target=\"_blank\" rel=\"noopener noreferrer\">BigQuery documentation<\/a><\/li>\n<li><a href=\"https:\/\/support.google.com\/google-ads\/answer\/15188209?hl=en\" target=\"_blank\" rel=\"noopener noreferrer\">Google Ads Data Retention Policy<\/a><\/li>\n<li><a href=\"https:\/\/developers.google.com\/google-ads\/api\/docs\/query\/date-ranges\" target=\"_blank\" rel=\"noopener noreferrer\">Google Ads API date ranges<\/a><\/li>\n<\/ul>\n<\/div>\n","protected":false},"excerpt":{"rendered":"<p>Dzienne uzupe\u0142nienia Google Ads i Search Ads 360 w BigQuery DTS maj\u0105 limit 37 miesi\u0119cy. Konektor Analytics mo\u017ce nadpisa\u0107 stare partycje niepe\u0142nymi wynikami. Google Signals i Ads Consent Mode steruj\u0105 odr\u0119bnymi elementami.<\/p>\n","protected":false},"author":1,"featured_media":15130,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[11],"tags":[92084,92097,92100,92103],"class_list":["post-9403","post","type-post","status-publish","format-standard","hentry","category-digital-analytics-pl","tag-bigquery-pl","tag-data-quality-pl","tag-google-analytics-4-pl","tag-google-cloud-pl"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.1 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik<\/title>\n<meta name=\"description\" content=\"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.\" \/>\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\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik\" \/>\n<meta property=\"og:description\" content=\"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/\" \/>\n<meta property=\"og:site_name\" content=\"Lukas Wojcik - Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-08-12T18:00:00+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-24T02:16:24+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-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=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/\"},\"author\":{\"name\":\"Lukas Wojcik\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"headline\":\"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026\",\"datePublished\":\"2026-08-12T18:00:00+00:00\",\"dateModified\":\"2026-10-24T02:16:24+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/\"},\"wordCount\":1328,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#\\\/schema\\\/person\\\/895f7604f9b6b71aad9bba33af28d0f9\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-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\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/\",\"name\":\"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png\",\"datePublished\":\"2026-08-12T18:00:00+00:00\",\"dateModified\":\"2026-10-24T02:16:24+00:00\",\"description\":\"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png\",\"contentUrl\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/wp-content\\\/uploads\\\/2026\\\/09\\\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png\",\"width\":1200,\"height\":630,\"caption\":\"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/pl\\\/digital-analytics-pl\\\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/www.lukaswojcik.com\\\/blog\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 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":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik","description":"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.","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\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/","og_locale":"en_US","og_type":"article","og_title":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik","og_description":"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.","og_url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/","og_site_name":"Lukas Wojcik - Blog","article_published_time":"2026-08-12T18:00:00+00:00","article_modified_time":"2026-10-24T02:16:24+00:00","og_image":[{"width":1200,"height":630,"url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png","type":"image\/png"}],"author":"Lukas Wojcik","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Lukas Wojcik","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#article","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/"},"author":{"name":"Lukas Wojcik","@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"headline":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026","datePublished":"2026-08-12T18:00:00+00:00","dateModified":"2026-10-24T02:16:24+00:00","mainEntityOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/"},"wordCount":1328,"commentCount":0,"publisher":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#\/schema\/person\/895f7604f9b6b71aad9bba33af28d0f9"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-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\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/","url":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/","name":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026 | Lukas Wojcik","isPartOf":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#primaryimage"},"image":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#primaryimage"},"thumbnailUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png","datePublished":"2026-08-12T18:00:00+00:00","dateModified":"2026-10-24T02:16:24+00:00","description":"Backfill BigQuery i Google Signals: granice czasu, puste wyniki importu i kontrola przed nadpisaniem istniej\u0105cej historii.","breadcrumb":{"@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#primaryimage","url":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png","contentUrl":"https:\/\/www.lukaswojcik.com\/blog\/wp-content\/uploads\/2026\/09\/hero-9403-dwie-czerwcowe-zmiany-w-analityce-be-n.png","width":1200,"height":630,"caption":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 2026"},{"@type":"BreadcrumbList","@id":"https:\/\/www.lukaswojcik.com\/blog\/pl\/digital-analytics-pl\/limit-backfill-w-bigquery-data-transfer-i-zakres-google-signals-dwie-zmiany\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.lukaswojcik.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Limit backfill w BigQuery Data Transfer i zakres Google Signals: dwie zmiany w GA4 z czerwca 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\/9403","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=9403"}],"version-history":[{"count":8,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9403\/revisions"}],"predecessor-version":[{"id":23558,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/posts\/9403\/revisions\/23558"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media\/15130"}],"wp:attachment":[{"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/media?parent=9403"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/categories?post=9403"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.lukaswojcik.com\/blog\/wp-json\/wp\/v2\/tags?post=9403"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}