Ana Sayfa / Seviye 3 / GA4 / BigQuery Entegrasyonu

BigQuery Entegrasyonu

📚 Seviye 3 — Uzmanlaşma ⏱ ~15 dakika

1. Neden BigQuery?

GA4 arayüzü örneklenmiş (sampled) veriler gösterebilir ve belirli analiz türlerini desteklemez. BigQuery, ham event-level veriye doğrudan erişim sağlar.

a) BigQuery'nin Avantajları

🎯 Benzetme: GA4 arayüzü bir restoranın menüsü gibidir — belirli yemeklerden (raporlardan) seçim yaparsınız. BigQuery ise restoranın mutfağıdır — tüm malzemelere (ham veriye) erişir ve istediğiniz tarifi (analizi) kendiniz yaparsınız.

2. BigQuery Bağlantısı Kurma

a) Kurulum Adımları

  1. GA4 Admin > Product Links > BigQuery Links
  2. "Link" butonuna tıklayın.
  3. Google Cloud projenizi seçin (yoksa oluşturun).
  4. Veri konumunu seçin (ör. EU veya US).
  5. Export türünü seçin: Daily (günlük) ve/veya Streaming (gerçek zamanlı).
  6. Export edilecek event'leri seçin (tümü veya belirli event'ler).
graph LR GA4["📊 GA4"] -->|"Daily Export\n(Günlük tablo)"| BQ["🗄 BigQuery"] GA4 -->|"Streaming Export\n(Anlık veri)"| BQ BQ --> ANALYSIS["📈 SQL Analizi"] BQ --> LOOKER["📊 Looker Studio"] BQ --> DS["📋 Data Science\n(Python, R)"] style GA4 fill:#E8F6FC,stroke:#29ABE2 style BQ fill:#DCFCE7,stroke:#22C55E
⚠️ Uyarı: BigQuery maliyeti kullanıma göre değişir. Daily export genellikle düşük maliyetlidir (ayda birkaç dolar). Streaming export ise yüksek trafikli sitelerde maliyeti önemli ölçüde artırabilir. Başlangıçta yalnızca daily export ile başlayın.

3. GA4 BigQuery Export Şeması

GA4 verileri BigQuery'de belirli bir şema (yapı) ile saklanır. Bu yapıyı anlamak SQL sorguları yazmak için zorunludur.

a) Ana Tablo Yapısı

Her gün için bir tablo oluşturulur: events_YYYYMMDD (ör. events_20250401)

SütunTürAçıklama
event_nameSTRINGEvent adı (page_view, purchase, vb.)
event_timestampINTEGERMicrosecond cinsinden zaman damgası
user_pseudo_idSTRINGAnonim kullanıcı ID
event_paramsRECORD (REPEATED)Event parametreleri (key-value çiftleri)
user_propertiesRECORD (REPEATED)Kullanıcı özellikleri
itemsRECORD (REPEATED)E-ticaret ürün bilgileri
traffic_sourceRECORDİlk edinim kaynağı
deviceRECORDCihaz bilgileri
geoRECORDCoğrafi konum

b) event_params Yapısı (UNNEST)

event_params iç içe (nested) bir yapıdadır. Değerlere erişmek için UNNEST fonksiyonu kullanılır:

SELECT
  event_name,
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location') AS page_url,
  (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'engagement_time_msec') AS engagement_time
FROM `project.dataset.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250301' AND '20250331'
graph TD ROW["📄 Tek Event Satırı"] --> EN["event_name\n'purchase'"] ROW --> EP["event_params\n(REPEATED)"] ROW --> UP["user_properties\n(REPEATED)"] ROW --> IT["items\n(REPEATED)"] EP --> EP1["key: 'transaction_id'\nvalue: 'T-123'"] EP --> EP2["key: 'value'\nvalue: 3847.80"] EP --> EP3["key: 'currency'\nvalue: 'TRY'"] IT --> IT1["item_id: 'SKU-A100'\nitem_name: 'Trençkot'\nprice: 1899.00"] style ROW fill:#E8F6FC,stroke:#29ABE2 style EP fill:#DCFCE7,stroke:#22C55E style IT fill:#FEF3C7,stroke:#F59E0B

4. Temel SQL Sorguları

a) Günlük Event Sayısı

SELECT
  event_name,
  COUNT(*) AS event_count
FROM `project.dataset.events_20250401`
GROUP BY event_name
ORDER BY event_count DESC
LIMIT 20;

b) Kaynak/Ortam Bazlı Dönüşümler

SELECT
  traffic_source.source,
  traffic_source.medium,
  COUNTIF(event_name = 'purchase') AS purchases,
  SUM(
    (SELECT value.double_value FROM UNNEST(event_params) WHERE key = 'value')
  ) AS total_revenue
FROM `project.dataset.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250301' AND '20250331'
  AND event_name = 'purchase'
GROUP BY 1, 2
ORDER BY purchases DESC;

c) Benzersiz Kullanıcı Sayısı

SELECT
  COUNT(DISTINCT user_pseudo_id) AS unique_users
FROM `project.dataset.events_*`
WHERE _TABLE_SUFFIX BETWEEN '20250301' AND '20250331';
💡 İpucu: BigQuery'de events_* ile wildcard kullanıp _TABLE_SUFFIX ile tarih filtrelemek, sorgu maliyetini önemli ölçüde azaltır. Tüm tabloyu taramak yerine yalnızca ihtiyacınız olan tarihleri sorgulayın.

📝 Quiz — Bilgini Test Et

← Önceki Ders Sonraki Ders →