Blog Analityczny. Narzędzia. Techniki. Rozwiązania Analityczne.

Google Analytics 4 i BigQuery. Poglądowy przewodnik po eksporcie danych i optymalizacji kosztów

10.2024 | Google Analytics 4 | BigQuery | Optymalizacja kosztu

Google Analytics 4 (GA4) w połączeniu z BigQuery oferuje zaawansowane możliwości analizy danych, ale ta dodatkowa moc ma swój koszt w postaci opłat związanych z wykorzystaniem bazy Google BigQuery.

W tym artykule skupimy się na dostępnych typach eksportu danych oraz metodach kontroli kosztów związanych z wykorzystaniem wspomnianego BigQuery.

1. Typy eksportu danych z GA4 do BigQuery

1.1. Eksport dzienny (Daily Export)

  • Dane są eksportowane raz dziennie
  • Zawiera szczegółowe informacje o zdarzeniach z poprzedniego dnia
  • Dane są dostępne zwykle w ciągu 24-48 godzin
  • Format: tabele dzienne w schemacie analytics_XXXXXXXX.events_YYYYMMDD

1.2. Eksport strumieniowy (Streaming Export)

  • Dane są przesyłane w czasie rzeczywistym (opóźnienie kilku minut)
  • Wymaga wyższego poziomu GA4 (GA4 360)
  • Pozwala na szybszą reakcję na zachowania użytkowników
  • Generuje większe koszty ze względu na częstsze operacje zapisu

1.3. Eksport niestandardowy (Custom Export)

  • Możliwość wyboru konkretnych zdarzeń do eksportu
  • Pozwala na filtrowanie danych przed eksportem
  • Zmniejsza ilość przechowywanych danych
  • Wymaga dokładnego planowania struktury danych

2. Limity eksportu w Google Analytics 4

2.1. Limity dla wersji darmowej GA4

  • Maksymalnie 10 miliardów zdarzeń miesięcznie
  • Maksymalnie 1 milion zdarzeń dziennie
  • Export do BigQuery dostępny tylko dla danych z ostatnich 2 miesięcy
  • Brak dostępu do eksportu strumieniowego
  • Maksymalnie 50 niestandardowych wymiarów
  • Maksymalnie 50 niestandardowych metryk

2.2. Limity dla GA4 360 (wersja płatna)

  • Praktycznie nieograniczona liczba zdarzeń (do uzgodnienia z Google)
  • Dostęp do eksportu strumieniowego
  • Pełny dostęp historyczny do danych w BigQuery
  • Do 100 niestandardowych wymiarów
  • Do 100 niestandardowych metryk
  • Priorytetowe przetwarzanie danych

2.3. Limity techniczne BigQuery dla danych GA4

  • Maksymalny rozmiar pojedynczej tabeli: 3000 TB
  • Maksymalna liczba kolumn w tabeli: 10,000
  • Limit zapytań na projekt: 100,000 na dzień
  • Maksymalny rozmiar pojedynczego rekordu: 100 MB
  • Maksymalny rozmiar pojedynczego pola: 100 MB

2.4. Ograniczenia czasowe

  • Opóźnienie w eksporcie dziennym: 24-48 godzin
  • Opóźnienie w eksporcie strumieniowym: kilka minut
  • Maksymalny okres retencji danych w GA4: 14 miesięcy
  • Częstotliwość odświeżania widoków zmaterializowanych: minimum co 30 minut

3. Kontrola kosztów w BigQuery

3.1. Optymalizacja zapytań

  • Używaj partycjonowania tabel według daty
SELECT *
FROM `analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20240101' AND '20240131'

  • Stosuj klauzulę LIMIT podczas testowania zapytań
  • Unikaj SELECT * - wybieraj tylko potrzebne kolumny

3.2. Zarządzanie danymi

  • Ustaw politykę retencji danych (np. 60 dni dla danych surowych)
  • Twórz agregacje dla często używanych zapytań
  • Wykorzystuj materialized views dla popularnych raportów
CREATE MATERIALIZED VIEW mv_daily_users AS
SELECT
  DATE(TIMESTAMP_MICROS(event_timestamp)) as event_date,
  COUNT(DISTINCT user_pseudo_id) as users
FROM
  `analytics_XXXXXXXX.events_*`
GROUP BY
  event_date

3.3. Budżetowanie i monitorowanie

  • Ustaw alerty budżetowe w Google Cloud Console
  • Monitoruj użycie poprzez BigQuery Monitoring API
  • Twórz dedykowane projekty dla różnych środowisk (dev/prod)

3.4. Optymalizacja kosztów przechowywania

  • Wykorzystuj partycjonowanie tabel
CREATE TABLE analytics_summary.user_metrics
PARTITION BY DATE(event_date) AS
SELECT
  DATE(TIMESTAMP_MICROS(event_timestamp)) as event_date,
  device.category as device_category,
  COUNT(*) as event_count
FROM
  `analytics_XXXXXXXX.events_*`
GROUP BY
  1, 2

  • Stosuj kompresję danych
  • Regularnie archiwizuj stare dane

4. Najlepsze praktyki

  1. Planowanie struktury danych
    • Zdefiniuj schemat danych przed rozpoczęciem eksportu
    • Ustal politykę retencji danych
    • Zaplanuj agregacje i widoki materialized
  2. Monitoring i optymalizacja
    • Regularnie przeglądaj logi zapytań
    • Identyfikuj kosztowne operacje
    • Optymalizuj często używane zapytania
  3. Automatyzacja
    • Twórz automatyczne procesy czyszczenia danych
    • Automatyzuj tworzenie raportów
    • Implementuj automatyczne alerty kosztowe

5. Przykład kalkulacji kosztów BigQuery dla średniej wielkości serwisu

5.1. Charakterystyka przykładowego serwisu

  • Lokalizacja: strefa frankfurt (europe-west3)
  • Dzienna liczba zdarzeń: 700,000
  • Miesięczna liczba zdarzeń: ~21,000,000
  • Średni rozmiar pojedynczego zdarzenia: ~2.5 KB
  • Okres przechowywania danych: 12 miesięcy

5.1.1. Kalkulacja kosztów przechowywania

=> Miesięczne przyrosty danych

  • 700,000 zdarzeń × 2.5 KB = ~1.75 GB dziennie
  • 1.75 GB × 30 dni = ~52.5 GB miesięcznie
  • Roczne dane: ~630 GB

=> Koszty przechowywania (strefa frankfurt)

  • Aktywne przechowywanie: $0.023 za GB/miesiąc
  • Miesięczny koszt dla rocznych danych: 630 GB × $0.023 = $14.49
  • Roczny koszt przechowywania: $14.49 × 12 = $173.88

5.1.2. Kalkulacja kosztów zapytań

=> Założenia:

  • 10 standardowych raportów dziennie, każdy skanujący 30 dni danych
  • 5 szczegółowych analiz tygodniowo, skanujących 90 dni danych
  • 2 pełne analizy miesięczne, skanujące roczne dane

=> Dzienne raporty

  • Skanowanie 30 dni = ~52.5 GB × 2 = 105 GB
  • 10 raportów × 105 GB = 1,050 GB skanowanych dziennie
  • Koszt: 1,050 GB × $0.0054 (cena za TB w strefie frankfurt) = $5.67 dziennie
  • Miesięczny koszt: $5.67 × 30 = $170.10

=> Tygodniowe analizy

  • Skanowanie 90 dni = ~52.5 GB × 3 = 157.5 GB
  • 5 analiz × 157.5 GB = 787.5 GB skanowanych tygodniowo
  • Koszt tygodniowy: 787.5 GB × $0.0054 = $4.25
  • Miesięczny koszt: $4.25 × 4 = $17.00

=> Miesięczne pełne analizy

  • Skanowanie rocznych danych = 630 GB
  • 2 analizy × 630 GB = 1,260 GB
  • Miesięczny koszt: 1,260 GB × $0.0054 = $6.80

5.1.3. Łączne miesięczne koszty

=> Podstawowe koszty

  • Przechowywanie: $14.49
  • Dzienne raporty: $170.10
  • Tygodniowe analizy: $17.00
  • Miesięczne analizy: $6.80
  • Suma podstawowa: $208.39

=> Dodatkowe koszty i optymalizacje

  • Zapytania ad-hoc (szacunkowo +15%): $31.26
  • Rezerwa na nieoczekiwane analizy (+10%): $20.84

=> Suma miesięczna: ~$260.49

5.1.4. Optymalizacje kosztów dla tego przypadku

=> Redukcja kosztów przechowywania

-- Tworzenie zagregowanej tabeli dziennej
CREATE TABLE analytics_summary.daily_metrics
PARTITION BY DATE(event_date)
AS
SELECT
  DATE(TIMESTAMP_MICROS(event_timestamp)) as event_date,
  COUNT(DISTINCT user_pseudo_id) as users,
  COUNT(*) as events,
  platform as platform,
  country as country
FROM
  `analytics_XXXXXXXX.events_*`
GROUP BY
  event_date,
  platform,
  country

Potencjalne oszczędności:

  • Agregacja dziennych danych może zmniejszyć rozmiar przechowywania o 70-80%
  • Dla zapytań agregacyjnych koszt skanowania może spaść o 90%

=> Optymalizacja kosztów zapytań

  1. Partycjonowanie według daty:
SELECT *
FROM `analytics_XXXXXXXX.events_*`
WHERE _TABLE_SUFFIX BETWEEN FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY))
  AND FORMAT_DATE('%Y%m%d', CURRENT_DATE())

  1. Materialized views dla popularnych raportów:
CREATE MATERIALIZED VIEW mv_platform_metrics
AS
SELECT
  DATE(TIMESTAMP_MICROS(event_timestamp)) as event_date,
  platform,
  COUNT(DISTINCT user_pseudo_id) as users,
  COUNT(*) as events
FROM
  `analytics_XXXXXXXX.events_*`
GROUP BY
  event_date,
  platform

=> Szacowane oszczędności po optymalizacji

  • Redukcja kosztów przechowywania: ~40% ($8.69 miesięcznie)
  • Redukcja kosztów zapytań: ~50% ($96.95 miesięcznie)
  • Szacowany miesięczny koszt po optymalizacji: ~$154.85

Podsumowanie

Efektywne wykorzystanie GA4 z BigQuery wymaga równowagi między dostępem do szczegółowych danych a kontrolą kosztów. Kluczowe jest zrozumienie dostępnych typów eksportu danych oraz implementacja odpowiednich strategii optymalizacji kosztów. Regularne monitorowanie i optymalizacja zapytań pozwolą na utrzymanie kosztów pod kontrolą przy jednoczesnym zachowaniu wysokiej wartości analitycznej danych.

Potrzebujesz wsparcia analitycznego?

Napisz do mnie poprzez formularz kontaktowy.