GA4 BigQuery Planlanmış Sorgularını Optimize Etme

Mar 15 2023
Google, Ekim 2020'de GA4'ü kullanıma sunduğundan beri, herkes asıl ödül olan verilerden iş değeri elde etmeye odaklanmak yerine UA'ya karşı GA4'ü tartışıyor! Bu aşamayı aştığınızı ve artık GA4'e geçişi tamamladığınızı, mülklerinizi BigQuery'ye bağladığınızı ve etkileyici GA4 verilerinizi toplamaya başladığınızı varsayarsak. UA raporlarınızı BigQuery'de GA4 kullanarak çoğaltmayı veya yeni GA4 otomatik raporları oluşturmayı düşünüyor olabilirsiniz.

Google, Ekim 2020'de GA4'ü kullanıma sunduğundan beri, herkes gerçek ödül olan verilerden iş değeri elde etmeye odaklanmak yerine UA ile GA4'ü tartışıyor ! Bu aşamayı aştığınızı ve artık GA4'e geçişi tamamladığınızı, mülklerinizi BigQuery'ye bağladığınızı ve etkileyici GA4 verilerinizi toplamaya başladığınızı varsayarsak. UA raporlarınızı BigQuery'de GA4 kullanarak çoğaltmayı veya yeni GA4 otomatik raporları oluşturmayı düşünüyor olabilirsiniz.

Tamamen yeni olay tabanlı veri şemasına ek olarak Google, günlük dışa aktarmayı tablo tarihinden sonraki 72 saate kadar günceller . Neden soruyorsun? Ölçüm Protokolünden gelebilecek başarısız veya gecikmiş olaylara uyum sağlamak için.

Tablo, tablo tarihinden 2 gün sonra değiştirilir

Bu, önemli bir soruyu gündeme getiriyor: Verileri tekrarlamadan veya en son güncellemeleri kaçırmadan günlük bir sorgu planlamanın en etkili yolu nedir? Görünen dört seçenek vardır:

  • Birincisi, her gün tüm tarih aralığını sorgulamak ve sonuçların üzerine yazmak… ama bu yaklaşım çok PAHALI!
  • İkincisi, en son üç günün her biri için ayrı bir sorgu planlamaktır... ama o zaman, her değişiklik yaptığınızda üç sorguyu güncellemeniz gerekir.
  • Üçüncü seçenek, son üç günü sorgulamak ve ardından yinelemeleri kaldırmaktır... ama bu en temiz çözüm değildir.
  • Dördüncü seçenek, veriler güncellendiğinde veya Cloud Logging yoluyla geldiğinde planlanmış bir sorguyu başlatan bir Bulut İşlevi kurmaktır. Elbette sağlam bir çözüm, ancak ciddi Python/Node.js, vb. gerektiren bir çözüm. bilgi birikimi ve böyle bir boru hattını kurmak zaman alır.

#DECLARE VARIABLES AND TIMEFRAME
DECLARE 
  set_date date;
DECLARE
  final_date DEFAULT DATE_ADD(CURRENT_DATE(),INTERVAL -1 day); 
DECLARE
  initial_date date DEFAULT DATE_ADD(CURRENT_DATE(),INTERVAL -3 day); 
DECLARE
  formatted_date STRING;
SET set_date = initial_date;

# START FOR LOOP 
LOOP
SET
  set_date = DATE_ADD(set_date,INTERVAL 1 day);
SET
  formatted_date = FORMAT_DATE("%Y%m%d", set_date);
IF
  set_date > final_date THEN
LEAVE; 
END IF;
EXECUTE IMMEDIATE
#FORMAT QUERY 
  FORMAT("""
  CREATE OR REPLACE TABLE
  `{PROJECT_ID}.{DATASET_ID}.ga4_revenue_%s` AS
   ############ REVENUE FOR EACH USER ###############
      (
        SELECT
          user_pseudo_id,
          SUM(ecommerce.purchase_revenue) as revenue
        FROM
          `{PROJECT_ID}.{DATASET_ID}.events_*`
        WHERE
          (_TABLE_SUFFIX = '%s') AND user_pseudo_id IS NOT NULL
        GROUP BY
          1
        ORDER BY
          user_pseudo_id)
  
  """
  , formatted_date, formatted_date);
END LOOP;

Bu sorgu, tüm tarih aralığını sorgulamanın günlük maliyetini inanılmaz bir şekilde ~%200+ oranında dilimledi (maliyetler ve yüzde, elbette geçmiş veri hacminize göre değişir). Dolayısıyla, verilerinizden yalnızca ciddi bir değer elde etmekle kalmıyor, aynı zamanda ciddi bir kazanç elde ediyor ve veri raporlamanızı yerinde tutuyorsunuz.

BigQuery'deki yeni GA4 evreninde maceraya atılırken öğrendiklerimi bir dizi blogda paylaşacağım.

BigQuery'de döngü oluşturmanın keyfini çıkarın ve verilerinizden yalnızca değer elde etmekle kalmayın, bunu şık bir şekilde yapın!