Approximation du nombre unique dans Google Analytics

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 valeurs precision autorisées et le niveau de confiance pour les précisions habituelles.
  • sparse precision est un autre paramètre pour HLL+. Dans BigQuery, la valeur sparse 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.