To absolutnie najczęstszy błąd analityków w Data Studio – i jeden z niewielu, gdzie raport wygląda poprawnie dla pojedynczych wierszy, ale daje zupełnie błędny wynik w wierszu Total. Jeśli kiedykolwiek widziałeś, że łączny ROAS kampanii w podsumowaniu różni się od tego, co wychodzi w kalkulatorze – to właśnie ten problem.

Konkretny przykład – gdzie liczby się rozjeżdżają

Poniżej minimalne dane (10 wierszy, kolumna A i B), które wystarczą, żeby zobaczyć błąd gołym okiem:

A B a/b (per wiersz)
120,50
221,00
321,50
422,00
522,50
623,00
723,50
832,67
933,00
1033,33
SUM = 55 SUM = 23 AVG = 23,00 / 10

Wynik w wierszu Total zależy od zastosowanej formuły:

SUM(A) / SUM(B) = 55 / 23 2,39 ✓
a / b = AVG(0,50; 1,00; 1,50; … 3,33) = 23,00 / 10 2,30 ❌

Różnica wynosi 0,09 na 10 wierszach z prostymi liczbami. Na danych produkcyjnych – milionach rekordów, nieregularnych wolumenach, sezonowości – błąd może sięgać kilkunastu procent. Zafałszowany ROAS o 15% to realna różnica między tym, czy kampania "zarabia" czy "traci" w oczach zarządu.

Mechanizm jest prosty, gdy spojrzysz na to przez pryzmat statystyki:

  • a/b w Data Studio = średnia arytmetyczna ilorazów – dla każdego wiersza obliczany jest iloraz, a wiersz Total bierze ich średnią. Każdy wiersz ma wagę 1/n, niezależnie od wolumenu. Wiersz z A=1, B=2 waży tyle samo co wiersz z A=10, B=3.
  • SUM(a)/SUM(b) = średnia ważona ilorazów – wagą każdego wiersza jest jego mianownik (B). Wiersz z B=3 waży półtora raza więcej niż wiersz z B=2, bo reprezentuje "więcej" w kontekście mianownika.

Można to udowodnić algebraicznie: SUM(a)/SUM(b) jest identyczne z Σ (a_i/b_i) × (b_i / SUM(b)) – to klasyczna definicja średniej ważonej, gdzie wagą jest B. W praktyce biznesowej oznacza to, że kampania z budżetem 10 000 PLN wpływa na łączny ROAS proporcjonalnie bardziej niż kampania testowa z budżetem 200 PLN – dokładnie tak jak powinno być.

Dlaczego tak się dzieje – model agregacji Data Studio

Data Studio (podobnie jak BigQuery, Tableau czy Power BI) stosuje dwuetapowy model obliczeń:

  1. Etap wiersza: dla każdego rekordu w źródle danych obliczana jest wartość pola obliczeniowego. Formuła Przychód / Wydatki daje wynik per wiersz.
  2. Etap agregacji: gdy tabela ma grupowanie (np. per kampania, per dzień), silnik musi zagregować wiersze do jednego wyniku. Domyślnie stosuje AVG – czyli średnią arytmetyczną z wartości wierszowych.

Wiersz Total to skrajny przypadek etapu agregacji – wszystkie wiersze sprowadzone do jednej liczby. Przy a/b każdy wiersz ma równą wagę, niezależnie od wolumenu. To matematycznie poprawna operacja, ale biznesowo zupełnie bez sensu – dzień z obrotem 50 000 PLN waży tyle samo co dzień z obrotem 100 PLN.

Zasada kluczowa: w Data Studio wszelkie wskaźniki będące ilorazem dwóch miar (CR, ROAS, AOV, marża %, CPC, CPK, spalanie, OTD%) zawsze muszą być definiowane jako SUM(licznik) / SUM(mianownik).

Jedyna poprawna metoda: SUM(a) / SUM(b)

Formuła SUM(a) / SUM(b) mówi Data Studio: „najpierw zsumuj osobno licznik i mianownik dla wszystkich wierszy w grupie, a dopiero potem podziel". Dzięki temu większe wartości mianownika (wyższe budżety, więcej sesji, więcej km) naturalnie ważą wynik – identycznie jak kalkulator.

-- ❌ Błędnie – średnia arytmetyczna ROAS-ów per wiersz
Przychód / Wydatki

-- ✓ Poprawnie – ROAS ważony wolumenem wydatków
SUM(Przychód) / SUM(Wydatki)

Przykłady dla popularnych wskaźników

Wskaźnik ❌ Błędna formuła ✓ Poprawna formuła
ROAS Przychód / Wydatki SUM(Przychód) / SUM(Wydatki)
CR (konwersja) Transakcje / Sesje SUM(Transakcje) / SUM(Sesje)
AOV Przychód / Zamówienia SUM(Przychód) / SUM(Zamówienia)
Marża brutto % (Przychód - Koszt) / Przychód (SUM(Przychód) - SUM(Koszt)) / SUM(Przychód)
CPC Koszt / Kliknięcia SUM(Koszt) / SUM(Kliknięcia)
CPK (koszt/km) Koszty / Kilometry SUM(Koszty) / SUM(Kilometry)
OTD % Dostawy_na_czas / Dostawy_total SUM(Dostawy_na_czas) / SUM(Dostawy_total)

Kiedy a/b jest jednak poprawne?

Są sytuacje, w których formuła bez SUM() jest właściwa – gdy dane są już wcześniej zagregowane i każdy wiersz reprezentuje niezależny, równoważny punkt danych. Przykłady:

  • Dane z jednego dnia per kampania, gdy raport jest bez grupowania po czasie – każdy wiersz to osobna kampania i ROAS per wiersz jest już ostateczny.
  • Stawki i ceny – jeśli masz kolumnę Cena jednostkowa i chcesz przeliczać ją (np. PLN → EUR), to mnożenie przez kurs walutowy nie wymaga SUM().
  • Dane z BigQuery po stronie SQL – jeśli zapytanie zwraca już zagregowane metryki (GROUP BY kampania), wiersze są unikalne i podwójne SUM() mogłoby narobić szkód.

Praktyczna zasada: jeśli tworzysz wskaźnik pochodny (iloraz dwóch miar surowych, które Data Studio będzie sumował), użyj SUM/SUM. Jeśli operujesz na wartości już obliczonej w źródle – możesz pominąć.

Ochrona przed dzieleniem przez zero

Sama formuła SUM(a) / SUM(b) wciąż rzuci błąd, gdy mianownik wynosi zero (np. kampania bez żadnych wydatków). Zabezpiecz to przez NULLIF():

-- NULLIF zamienia 0 na null; Data Studio nie wyświetli błędu, tylko pustą komórkę
SUM(Przychód) / NULLIF(SUM(Wydatki), 0)

-- Jeśli wolisz 0 zamiast pustej komórki:
IFNULL(SUM(Przychód) / NULLIF(SUM(Wydatki), 0), 0)

Checklist weryfikacji formuł w Twoich raportach

Wejdź w tryb edycji każdego raportu i przejrzyj pola obliczeniowe przez ten filtr:

  • ☐ Czy pole zawiera / (dzielenie)? → obowiązkowo sprawdź, czy licznik i mianownik mają SUM()
  • ☐ Czy wiersz Total w tabeli zgadza się z kalkulatorem na tych samych liczbach? → jeśli nie, masz błąd agregacji
  • ☐ Czy pole jest używane po data blendingu? → SUM/SUM jest krytyczne, bo blending agreguje po kluczu złączenia
  • ☐ Czy źródło danych to Google Sheets lub CSV? → surowe dane wierszowe wymagają SUM/SUM dla każdego wskaźnika
  • ☐ Czy źródło to BigQuery z GROUP BY? → dane już zagregowane, sprawdź, czy SUM() się nie podwaja

Błąd agregacji to jeden z tych problemów, które są całkowicie niewidoczne w raportach – dopóki ktoś nie sprawdzi wyników kalkulatorem. W firmach, gdzie dashboardy są podstawą decyzji budżetowych, zafałszowany ROAS o 20–30% może prowadzić do realnych strat.

Chcesz audytu formuł w swoich raportach? Napisz – przejrzę wszystkie pola obliczeniowe i sprawdzę, czy liczby w podsumowaniu odpowiadają rzeczywistości.