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. AncakAPPROX_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 verilenprecision
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'desparse precision
değeri kullanıcı tarafından tanımlanamaz veprecision + 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.