Raport działa świetnie przez tygodnie – a potem pewnego dnia zarząd podczas prezentacji widzi szary ekran z napisem "Quota Exceeded" lub "Data Studio has encountered a system error". To jeden z najczęstszych problemów przy skalowaniu dashboardów BigQuery. Dobra wiadomość: każdy z tych błędów ma konkretną przyczynę i konkretne rozwiązanie.

1. Skąd pochodzi błąd Quota Exceeded?

Data Studio wysyła zapytania SQL do BigQuery przy każdym zdarzeniu: otwarciu raportu, zmianie filtra, odświeżeniu strony, zmianie zakresu dat. Jeśli raport ma 10 wykresów, jedna zmiana filtra może wygenerować 10 równoległych zapytań. Przy 20 użytkownikach jednocześnie – 200 zapytań naraz.

Google nakłada kilka typów limitów:

  • Concurrent interactive queries: domyślnie 100 jednoczesnych zapytań interaktywnych per projekt.
  • Bytes processed per day: w modelu on-demand, przekroczenie 1 TB/dzień kosztuje i może uruchomić limity budżetowe.
  • GA4 Data API quotas: osobne limity dla natywnego konektora GA4 – 10 zapytań/sekundę i dzienny limit tokenów. To najczęstsze źródło Quota Exceeded przy raportach opartych na GA4.

2. Rozwiązanie 1: Data Extraction (keszowanie danych)

Funkcja Extract Data w Data Studio tworzy lokalną kopię (kesh) wyników zapytania – zazwyczaj aktualizowaną raz dziennie lub raz na 12 godzin. Zamiast 200 zapytań do BigQuery, wszystkie 20 użytkowników czyta z jednej kopii danych.

Jak skonfigurować: w edytorze źródła danych wybierz "Wyodrębnij dane" (Extract Data) zamiast bezpośredniego połączenia BigQuery. Ustaw harmonogram odświeżania (np. codziennie o 6:00). Limit: do 100 MB danych w ekstrakcji.

Kiedy nie używać: jeśli raport wymaga danych w czasie rzeczywistym (np. monitoring sprzedaży live). W takim przypadku przejdź do rozwiązania 3.

3. Rozwiązanie 2: BigQuery BI Engine

BI Engine to usługa analizy in-memory w BigQuery. Rezerwujesz określoną ilość pamięci RAM (od 1 GB), a BigQuery trzyma "gorące" dane w tej pamięci – zapytania zwracają wyniki w milisekundach zamiast sekund. Eliminuje to problem z limitami concurrent queries, bo zapytania są obsługiwane wielokrotnie szybciej.

Koszt: ok. 0,04 USD/GB/godzinę. Dla typowego raportu zarządczego (2–5 GB "gorących" danych) to 50–120 USD miesięcznie – często mniej niż koszt jednej godziny inżyniera sprzątającego błędy.

4. Rozwiązanie 3: Zmaterializowane widoki i pre-agregacja

Najskuteczniejsza architektonicznie metoda to przeniesienie ciężkiej pracy agregacji z Data Studio do BigQuery – przez zmaterializowane widoki (Materialized Views) lub dedykowane tabele raportowe.

-- Zamiast: SELECT * FROM orders JOIN ... GROUP BY ...
-- (wykonywane przy każdym odświeżeniu raportu)

-- Utwórz zmaterializowany widok:
CREATE MATERIALIZED VIEW projekt.dataset.daily_sales_summary AS
SELECT
  DATE(order_date) AS date,
  region,
  category,
  SUM(revenue) AS revenue,
  COUNT(*) AS orders,
  AVG(margin) AS avg_margin
FROM projekt.dataset.orders
GROUP BY 1, 2, 3;

-- Data Studio odpytuje tylko daily_sales_summary
-- BigQuery odświeża widok automatycznie

Więcej o optymalizacji kosztów BigQuery: Koszty BigQuery: jak analizować dane za darmo oraz Partycjonowanie vs klasterowanie w BigQuery.

5. Rozwiązanie dla błędu GA4 Quota

Jeśli Quota Exceeded pochodzi z natywnego konektora GA4 (nie BigQuery), jedynym trwałym rozwiązaniem jest przejście na BigQuery jako pośrednią warstwę danych. Włącz natywny eksport GA4 do BigQuery (bezpłatny dla GA4 property), a Data Studio połącz z tabelą BigQuery zamiast z konektorem GA4. Szczegóły: GA4 z Data Studio: konektor vs BigQuery.

Checklista diagnostyczna

  • Ile zapytań generuje raport przy jednej zmianie filtra? (sprawdź w BigQuery → Query History)
  • Ile osób jednocześnie korzysta z raportu?
  • Czy źródło danych to natywny konektor GA4? → Przejdź na BigQuery.
  • Czy dane muszą być real-time, czy wystarczy odświeżenie raz dziennie? → Użyj Data Extraction.
  • Czy tabele BigQuery są partycjonowane po dacie? → Bez partycjonowania skanują całą tabelę.

Powiązane artykuły