Minhaz Kazi, Developers Advocate, Google Analytics – Octobre 2022
Pour mesurer des décomptes exacts et distincts (la cardinalité) pour de grands ensembles de données, une mémoire importante et affecte les performances. Les propriétés Google Analytics 4 utilisent Algorithme HyperLogLog++ (HLL++) pour estimer la cardinalité des métriques les plus utilisées. y compris les Utilisateurs actifs et les Sessions. Par exemple, lorsque vous consultez Actifs d'utilisateurs dans l'interface utilisateur de Google Analytics et via l'API Data, le nombre sera une approximation. L'utilisation de HLL++ pour ces métriques garantit une meilleure avec des estimations plus précises et des limites d'erreur inférieures. Ce Cet article de blog fournit des informations sur l'utilisation de HLL++ dans les propriétés Google Analytics 4. et comment répliquer certaines estimations à l'aide de l'exportation d'événements BigQuery données.
À propos de HLL++
HLL++ estime la cardinalité tout en utilisant moins de mémoire et en améliorant les performances.
HLL++ a des augmentations effectuées via l'algorithme HyperLogLog et est basée sur
HyperLogLog en pratique: l'ingénierie algorithmique d'un système de pointe
Algorithme d'estimation de la cardinalité Modifications apportées au paramètre HLL++ precision
compromis entre utilisation de la mémoire
et précision des statistiques calculées. Augmenter la valeur
réduit l'erreur, mais augmente la consommation de mémoire.
Implémentation du nombre unique dans BigQuery
- Utilisez
COUNT(DISTINCT)
pour mesurer la cardinalité exacte. Cette approche nécessite plus de mémoire et leur exécution prendra plus de temps, en particulier pour les grands ensembles de données. APPROX_COUNT_DISTINCT
fournit une approximation des résultats avec HLL++. Toutefois,APPROX_COUNT_DISTINCT
ne permet pas aux utilisateurs de configurer l'approximation précision.- Pour utiliser des valeurs
precision
personnalisées, utilisez les fonctions HyperLogLog++. Voir Sketches HLL++ pour les valeursprecision
autorisées et le niveau de confiance pour les précisions habituelles. sparse precision
est un autre paramètre pour HLL+. Dans BigQuery, la valeursparse precision
ne peut pas être définie par l'utilisateur et est fixée àprecision + 5
.
Implémentation HLL++ dans les propriétés Google Analytics 4
Google Analytics 4 utilise la configuration suivante pour mesurer la cardinalité des les métriques associées.
Métrique | precision |
sparse precision |
---|---|---|
Sessions | 12 | 17 |
Utilisateurs actifs | 14 | 25 |
Nombre total d'utilisateurs | 14 | 25 |
Utiliser des fonctions HLL++ BigQuery avec des données d'événement Google Analytics
Si les données d'événement de votre propriété Google Analytics 4 sont disponibles dans BigQuery, vous pouvez essayer de faire correspondre les métriques de l'UI aux données BigQuery. Les exemples suivants supposer que:
- L'identifiant de rapport est défini sur
By device only
pour Google Analytics 4 . - Autres sources d'écarts potentielles (par exemple, fuseau horaire des rapports, et pris en compte.
Nombre total d'utilisateurs
Nombre exact avec COUNT(DISTINCT)
:
SELECT
COUNT(DISTINCT user_pseudo_id) AS exact_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Nombre approximatif avec APPROX_COUNT_DISTINCT
:
SELECT
APPROX_COUNT_DISTINCT(user_pseudo_id) AS approx_total_user_count,
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
Vous pouvez répliquer APPROX_COUNT_DISTINCT
à l'aide des fonctions HLL++ BigQuery. Ce
renverra des résultats identiques ou très similaires au format 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_*`
Enfin, pour répliquer les données dans l'UI Google Analytics, utilisez 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_*`
Utilisateurs actifs
Pour calculer le nombre d'utilisateurs actifs à partir de la table d'exportation d'événements BigQuery, vous devez d'abord n'avez à filtrer les événements que pour les utilisateurs actifs. L'implémentation de la classe Le filtre "Utilisateur" n'est pas abordé dans cet article.
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
Sessions
Le paramètre d'événement ga_session_id
identifie des sessions uniques individuelles pour
chaque utilisateur. La combinaison de user_pseudo_id
et ga_session_id
sera
dans votre ensemble de données pour des sessions uniques. C'est la méthode standard
pour comptabiliser les sessions
pour les propriétés Google Analytics 4. Pour les sessions, precision
est de 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_*`
Vous pouvez utiliser les requêtes décrites dans cet article de blog avec les Requêtes de base et Exemples de requêtes avancées pour obtenir des insights supplémentaires à partir des événements BigQuery exporter des données pour vos propriétés Google Analytics 4. Si votre propriété génère une grande quantité de données d'événements, vous pouvez également implémenter les fonctions HLL++ pour Estimer la cardinalité d'autres métriques que vous utilisez couramment dans votre requêtes. Pour en savoir plus sur HLL++ et pourquoi le calcul de la cardinalité est coûteux des ensembles de données volumineux, lisez l'article de blog détaillé sur le blog Cloud: Utiliser HLL++ pour accélérer le comptage distinct dans les ensembles de données volumineux.