Kiedy budżet reklamowy jest rozłożony między Google Ads, Meta Ads i TikTok Ads, każda platforma raportuje wyniki w swoim własnym panelu – z innymi definicjami konwersji, innymi oknami atrybucji i innymi formatami dat. Porównanie ROAS między platformami na podstawie exportów CSV do arkusza jest podatne na błędy i wymaga manualnej pracy przy każdym raporcie.
Rozwiązaniem jest centralizacja danych w BigQuery: wszystkie platformy zasilają jedną tabelę, a Data Studio odpytuje ją przez pojedyncze złączenie SQL. Raport jest zawsze aktualny, bez ręcznego importu.
Problem silosów danych reklamowych
Każda platforma reklamowa ma własną definicję konwersji. Google Ads liczy konwersję przez 30 dni od kliknięcia, Meta przez 7 dni kliknięcie + 1 dzień wyświetlenie. Ten sam zakup może być przypisany przez obie platformy jednocześnie – co powoduje, że suma konwersji z raportów platform przekracza rzeczywistą liczbę zakupów w sklepie.
Porównanie kosztów i przychodów przez BigQuery, gdzie źródłem prawdy są dane z systemu transakcyjnego (nie z platform reklamowych), eliminuje problem podwójnego liczenia.
Google Ads → BigQuery: Data Transfer Service
Google Ads i BigQuery działają w ramach tego samego ekosystemu GCP, dlatego integracja jest natywna i bezpłatna. BigQuery Data Transfer Service pobiera dane z Google Ads automatycznie według harmonogramu.
Konfiguracja krok po kroku:
- W konsoli BigQuery przejdź do Data Transfers → Create Transfer.
- Wybierz źródło: Google Ads.
- Podaj Customer ID konta Google Ads (format: XXX-XXX-XXXX).
- Wybierz docelowy dataset w BigQuery i harmonogram (domyślnie: codziennie).
- Autoryzuj dostęp – BigQuery wymaga konta Google z uprawnieniami do konta Ads.
Po pierwszym transferze BigQuery tworzy tabele takie jak ads_Campaign_XXXXXXXXXX, ads_AdGroup_XXXXXXXXXX i p_clicks_XXXXXXXXXX z pełną historią kampanii.
Facebook Ads → BigQuery: dwie metody
Meta nie udostępnia natywnego konektora do BigQuery, dlatego istnieją dwa podejścia w zależności od budżetu i wymagań technicznych:
| Metoda | Koszt | Czas wdrożenia | Dla kogo |
|---|---|---|---|
| No-code (Supermetrics, Fivetran, Airbyte) | $99–$500/mies. | 1–2 dni | Agencje, firmy bez zasobów dev |
| Cloud Function (Python + Marketing API) | ~$0–5/mies. (GCP) | 3–5 dni | Firmy z zasobami technicznymi |
Metoda Cloud Function polega na skrypcie Python uruchamianym przez Cloud Scheduler (odpowiednik cron job w GCP). Skrypt wywołuje Meta Marketing API, pobiera raport dzienny w formacie JSON i zapisuje go do tabeli BigQuery przez bibliotekę google-cloud-bigquery.
import requests
from google.cloud import bigquery
import os
def fetch_meta_ads(request):
token = os.environ['META_TOKEN']
account_id = os.environ['META_ACCOUNT_ID']
url = f"https://graph.facebook.com/v19.0/act_{account_id}/insights"
params = {
'access_token': token,
'fields': 'campaign_name,spend,impressions,clicks,date_start',
'date_preset': 'yesterday',
'level': 'campaign'
}
data = requests.get(url, params=params).json().get('data', [])
client = bigquery.Client()
table_id = 'projekt.ads.meta_ads_daily'
client.insert_rows_json(table_id, data)
return f"Inserted {len(data)} rows"
Widok UNION ALL: jedna tabela dla obu platform
Po zasileniu obu tabel (Google Ads i Meta Ads) w BigQuery, widok UNION ALL scala je w jedną spójną strukturę z jednolitymi nazwami kolumn:
CREATE OR REPLACE VIEW `projekt.ads.wszystkie_platformy` AS
SELECT
date AS data,
'Google Ads' AS platforma,
campaign_name,
cost_micros / 1000000 AS wydatki,
impressions,
clicks
FROM `projekt.ads.google_ads_daily`
UNION ALL
SELECT
date_start,
'Meta Ads',
campaign_name,
CAST(spend AS FLOAT64),
CAST(impressions AS INT64),
CAST(clicks AS INT64)
FROM `projekt.ads.meta_ads_daily`
Ten widok jest bezpośrednim źródłem danych dla dashboardu w Data Studio. Wymiar platforma pozwala filtrować lub segmentować wykresy per platforma bez zmiany zapytania.
Dashboard ROAS w Data Studio
Po podłączeniu widoku do Data Studio kluczowe metryki dashboardu reklamowego to:
- ROAS per platforma:
SUM(przychod) / SUM(wydatki)– zawsze agregaty, nie średnia z dni - CTR:
SUM(clicks) / SUM(impressions) - CPC:
SUM(wydatki) / SUM(clicks) - Udział w budżecie per platforma:
SUM(wydatki) / SUM(wydatki) OVER ()– pole obliczeniowe z PERCENT_OF_TOTAL
Centralizacja danych reklamowych w BigQuery pozwala porównywać platformy na tych samych zasadach atrybucji – zamiast zestawiać liczby z różnych paneli z różnymi definicjami konwersji.