Google Analytics'te benzersiz sayı tahmini

Minhaz Kazi, Developer Advocate, Google Analytics – Ekim 2022

Büyük veri kümelerinde tam olarak farklı sayıların (kardinalitenin) ölçülmesi, önemli miktarda bellek gerektirir ve performansı etkiler. Google Analytics 4 mülkleri, Etkin Kullanıcı Sayısı ve Oturum Sayısı dahil en çok kullanılan metriklerin kardinalitesini tahmin etmek için HyperLogLog++ (HLL++) algoritmasını kullanır. Örneğin, Etkin Kullanıcı Sayısı'nı Google Analytics kullanıcı arayüzünde ve Data API üzerinden görüntülerken sayı yaklaşık bir değerdir. Bu metrikler için HLL++ kullanılması, daha yüksek tahmin doğruluğu ve daha düşük hata sınırlarıyla daha iyi performans sağlar. Bu blog yayınında, Google Analytics 4 mülklerinde HLL++'nın nasıl kullanıldığı ve BigQuery etkinlik dışa aktarma verilerini kullanarak tahminlerden bazılarını nasıl yeniden oluşturabileceğiniz hakkında ayrıntılı bilgi verilmektedir.

HLL++ hakkında

HLL++, daha az bellek kullanıp performansı iyileştirirken kardinaliteyi tahmin eder. HLL++, HyperLogLog algoritması aracılığıyla ek özellikler içerir ve HyperLogLog in Practice: Algorithmic Engineering of a State of the Art Carddina Estimation Algoritması'na dayanır. HLL++ precision parametresindeki değişiklikler, hesaplanan istatistiklerin doğruluğu ile bellek kullanımı arasında fark oluşturur. Parametre değeri artırıldığında hata azalır ancak bellek tüketimi artar.

BigQuery'de benzersiz sayı uygulaması

  • Tam kardinaliteyi ölçmek için COUNT(DISTINCT) kullanın. Bu yaklaşım daha fazla bellek gerektirir ve özellikle büyük veri kümelerinde daha uzun sürer.
  • APPROX_COUNT_DISTINCT, sonuçları HLL++ ile yaklaşık olarak tahmin eder. Ancak APPROX_COUNT_DISTINCT, kullanıcıların yaklaşık doğruluğu yapılandırmasına izin vermez.
  • Özel precision değerleri kullanmak için HyperLogLog++ işlevlerini kullanın. İzin verilen precision değerleri ve tipik hassasiyetler için güven aralıkları için HLL++ Çizimler bölümüne bakın.
  • sparse precision, HLL+ için başka bir parametredir. BigQuery'de sparse precision değeri kullanıcı tarafından tanımlanamaz ve precision + 5 olarak sabitlenir.

Google Analytics 4 mülklerinde HLL++ Uygulaması

Google Analytics 4, ilgili metriklerin kardinalitesini ölçmek için aşağıdaki yapılandırmayı kullanır.

Metrik precision sparse precision
Oturumlar 12 17
Etkin Kullanıcı Sayısı 14 25
Toplam Kullanıcı Sayısı 14 25

BigQuery HLL++ İşlevlerini Google Analytics Etkinlik verileriyle kullanma

Google Analytics 4 mülkünüzün etkinlik verileri BigQuery'de mevcutsa kullanıcı arayüzündeki metrikleri BigQuery verileriyle eşleştirmeyi deneyebilirsiniz. Aşağıdaki örneklerde varsayılmaktadır:

  • Google Analytics 4 mülkü için raporlama kimliği By device only olarak ayarlandı.
  • Diğer olası tutarsızlık kaynakları (ör. raporlama saat dilimi) zaten ele alınmıştır.

Toplam Kullanıcı Sayısı

COUNT(DISTINCT) kullanılarak belirlenen tam sayı:

SELECT
  COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

APPROX_COUNT_DISTINCT kullanılarak yaklaşık değer:

SELECT
  APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

BigQuery HLL++ işlevlerini kullanarak APPROX_COUNT_DISTINCT değerini çoğaltabilirsiniz. Bu, APPROX_COUNT_DISTINCT ile aynı veya çok benzer sonuçları döndürür:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 15)) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Son olarak, Google Analytics kullanıcı arayüzündeki verileri çoğaltmak için precision = 14 kullanın:

SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Etkin kullanıcı sayısı

Etkin Kullanıcı Sayısı sayısını BigQuery etkinlik dışa aktarma tablosundan hesaplamak için öncelikle etkinlikleri yalnızca Etkin Kullanıcılar'a göre filtrelemeniz gerekir. Etkin Kullanıcı filtresinin uygulanması, bu makalenin kapsamı dışındadır.

WITH ActiveUsers AS
(
  SELECT
    user_pseudo_id
  FROM
    `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
  WHERE
  <implement active user filter logic>
)
SELECT
  HLL_COUNT.EXTRACT(HLL_COUNT.INIT(user_pseudo_id, 14)) AS active_user_count,
FROM ActiveUsers

Oturum sayısı

ga_session_id etkinlik parametresi, her kullanıcı için benzersiz oturumları ayrı ayrı tanımlar. user_pseudo_id ve ga_session_id kombinasyonu, benzersiz oturumlar için veri kümenizde benzersiz olacaktır. Bu, Google Analytics 4 mülkleri için standart oturum sayma yöntemidir. Oturumlar için precision 12'dir.

SELECT
  HLL_COUNT.EXTRACT(
    HLL_COUNT.INIT(
      CONCAT(
        user_pseudo_id,
        (SELECT `value` FROM UNNEST(event_params) WHERE key = 'ga_session_id' LIMIT 1).int_value),
      12)) AS session_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

Bu blog yayınındaki sorguları Temel Sorgular ve Gelişmiş Sorgular örnekleriyle birlikte kullanarak Google Analytics 4 mülklerinizin BigQuery etkinlik dışa aktarma verilerinden ek analizler elde edebilirsiniz. Mülkünüz önemli miktarda etkinlik verisi oluşturuyorsa BigQuery sorgularınızda yaygın olarak kullandığınız diğer metriklerin kardinalitesini tahmin etmek için HLL++ işlevlerini de uygulayabilirsiniz. HLL++ ve kardinalite hesaplamasının büyük veri kümeleri için neden pahalı olduğu hakkında daha fazla bilgi edinmek için Cloud Blog'daki ayrıntılı blog yayınını okuyun: Çok büyük veri kümelerindeki farklı sayıları hızlandırmak için HLL++'yı kullanma.