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 metodaAPPROX_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ściprecision
i przedziały ufności dla typowych dokładności. - Kolejnym parametrem HLL+ jest
sparse precision
. W BigQuery wartościsparse 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.