Przybliżona liczba unikalnych użytkowników w Google Analytics

Minhaz Kazi, przedstawiciel ds. kontaktu z deweloperami, Google Analytics – październik 2022 r.

Pomiar dokładnych unikalnych liczby (czyli mocy zbioru) w przypadku dużych zbiorów danych wymaga dużej ilości pamięci i ma wpływ na wydajność. Usługi w Google Analytics 4 korzystają z algorytmu HyperLogLog++ (HLL++), aby szacować moc zbioru najczęściej używanych wskaźników, w tym Aktywnych użytkowników i Sesje. Gdy np. wyświetlisz dane Aktywni użytkownicy w interfejsie Google Analytics lub za pomocą interfejsu Data API, liczba ta będzie przybliżona. Używanie HLL++ dla tych wskaźników zapewnia lepszą wydajność, wyższą dokładność szacowania i niższe progi błędów. W tym poście na blogu znajdziesz szczegółowe informacje o korzystaniu z języka HLL++ w usługach w Google Analytics 4 oraz o tym, jak możesz powielić niektóre szacunki za pomocą danych z eksportu zdarzeń BigQuery.

Informacje o HLL++

HLL++ szacuje moc zbioru, zużywając przy tym mniej pamięci i poprawiając wydajność. HLL++ ma ulepszenia wprowadzone w stosunku do algorytmu HyperLogLog i oparte na technologii HyperLogLog in Practice: Algorithmic Engineering of the State of the Art Cardinality Estimation Algorithm. Zmiany w parametrze HLL++ precision porównują wykorzystanie pamięci z dokładnością obliczonych statystyk. Zwiększenie wartości parametru zmniejsza błąd, ale zwiększa zużycie pamięci.

Implementacja zliczania unikalnych użytkowników w BigQuery

  • Aby zmierzyć dokładną moc zbioru, użyj narzędzia COUNT(DISTINCT). To podejście wymaga więcej pamięci i potrwa dłużej, zwłaszcza w przypadku dużych zbiorów danych.
  • Metoda APPROX_COUNT_DISTINCT zawiera przybliżone wyniki z użyciem HLL++. Jednak metoda APPROX_COUNT_DISTINCT nie zezwala użytkownikom na konfigurowanie dokładności przybliżonej wartości.
  • Aby użyć niestandardowych wartości precision, użyj funkcji HyperLogLog++. W HLL++ Szkice znajdziesz dozwolone wartości precision i przedziały ufności dla typowych dokładności.
  • Kolejnym parametrem HLL+ jest sparse precision. W BigQuery wartości sparse precision nie można zdefiniować przez użytkownika i ma ona stałą wartość precision + 5.

Implementacja HLL++ w usługach Google Analytics 4

Do pomiaru mocy zbioru powiązanych danych Google Analytics 4 używa poniższej konfiguracji.

Wskaźnik precision sparse precision
Sesje 12 17
Aktywni użytkownicy 14 25
Całkowita liczba użytkowników 14 25

Używanie funkcji BigQuery HLL++ z danymi zdarzeń Google Analytics

Jeśli dane o zdarzeniach w usłudze w Google Analytics 4 są dostępne w BigQuery, możesz spróbować dopasować wskaźniki z interfejsu do danych BigQuery. W przykładach przyjęto, że:

  • W usłudze Google Analytics 4 identyfikator raportowania jest ustawiony na By device only.
  • Wyeliminowaliśmy już inne potencjalne źródła rozbieżności, np. strefę czasową raportowania.

Całkowita liczba użytkowników

Dokładna liczba z użyciem parametru COUNT(DISTINCT):

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

Przybliżona liczba z wykorzystaniem funkcji APPROX_COUNT_DISTINCT:

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

Możesz replikować APPROX_COUNT_DISTINCT za pomocą funkcji BigQuery HLL++. Zwróci ono takie same lub bardzo podobne wyniki jak w przypadku APPROX_COUNT_DISTINCT:

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_*`

Aby powielić dane w interfejsie Google Analytics, użyj funkcji precision = 14:

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

Aktywni użytkownicy

Aby obliczyć liczbę aktywnych użytkowników na podstawie tabeli eksportu zdarzeń BigQuery, musisz najpierw przefiltrować zdarzenia tylko pod kątem użytkowników aktywnych. Stosowanie filtra Aktywny użytkownik nie należy do zakresu tego artykułu.

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

Sesje

Parametr zdarzenia ga_session_id określa poszczególne niepowtarzalne sesje każdego użytkownika. Kombinacja parametrów user_pseudo_id i ga_session_id będzie unikalna w całym zbiorze danych dla unikalnych sesji. To standardowa metoda zliczania sesji w usługach Google Analytics 4. W przypadku sesji precision to 12.

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_*`

W tym poście na blogu możesz używać zapytań z przykładami zapytań podstawowych i zapytań zaawansowanych, aby uzyskać dodatkowe informacje z wyeksportowanych danych BigQuery dotyczących Twoich usług w Google Analytics 4. Jeśli Twoja usługa generuje znaczną ilość danych zdarzeń, możesz też zaimplementować funkcje HLL++, aby oszacować moc zbioru innych wskaźników, których często używasz w zapytaniach BigQuery. Aby dowiedzieć się więcej o HLL++ i o tym, dlaczego obliczenia mocy zbioru są kosztowne w przypadku dużych zbiorów danych, znajdziesz w szczegółowym poście na blogu Cloud Blog: Using HLL++ do przyspieszenia różnicowania liczby operacji w ogromnych zbiorach danych.