Aproximación de recuento único en Google Analytics

Minhaz Kazi, Developer Advocate, Google Analytics, octubre de 2022

Medir recuentos exactos distintos (es decir, cardinalidad) para conjuntos de datos grandes requiere una memoria significativa y afecta el rendimiento. Las propiedades Google Analytics 4 usan el algoritmo HyperLogLog++ (HLL++) para estimar la cardinalidad para las métricas más usadas, incluidos los usuarios activos y las sesiones. Por ejemplo, cuando veas los usuarios activos en la IU de Google Analytics y en la API de datos, el recuento será una aproximación. El uso de HLL++ para estas métricas garantiza un mejor rendimiento con una mayor precisión en la estimación y límites de error más bajos. En esta entrada de blog, se proporcionan detalles sobre cómo se usa HLL++ en las propiedades Google Analytics 4 y cómo puedes replicar algunas de las estimaciones mediante los datos de exportación de eventos de BigQuery.

Información acerca de HLL++

HLL++ estima la cardinalidad mientras usa menos memoria y mejora el rendimiento. HLL++ tiene potenciaciones realizadas sobre el algoritmo HyperLogLog y se basa en HyperLogLog en la práctica: ingeniería algorítmica de un algoritmo de estimación de cardinalidad de última generación. Los cambios en el parámetro precision de HLL++ tienen en cuenta el uso de memoria frente a la precisión de las estadísticas calculadas. Aumentar el valor del parámetro disminuye el error, pero aumenta el consumo de memoria.

Implementación de recuento único en BigQuery

  • Usa COUNT(DISTINCT) para medir la cardinalidad exacta. Este enfoque requiere más memoria y tardará más en ejecutarse, en especial para conjuntos de datos grandes.
  • APPROX_COUNT_DISTINCT calcula los resultados con HLL++. Sin embargo, APPROX_COUNT_DISTINCT no permite que los usuarios configuren la precisión de la aproximación.
  • Para usar valores precision personalizados, usa las funciones HyperLogLog++. Consulta Bocetos de HLL++ a fin de ver los valores precision permitidos y los intervalos de confianza para las precisiones típicas.
  • sparse precision es otro parámetro para HLL+. En BigQuery, el valor sparse precision no es definible por el usuario y se fija en precision + 5.

Implementación de HLL++ en propiedades Google Analytics 4

Google Analytics 4 usa la siguiente configuración para medir la cardinalidad de las métricas relacionadas.

Métrica precision sparse precision
Sesiones 12 17
Usuarios activos 14 25
Total de usuarios 14 25

Cómo usar las funciones HLL++ de BigQuery con datos de eventos de Google Analytics

Si los datos de eventos de tu propiedad Google Analytics 4 están disponibles en BigQuery, puedes intentar hacer coincidir las métricas de la IU con los datos de BigQuery. En los siguientes ejemplos, se supone lo siguiente:

  • El identificador de informes está configurado como By device only para la propiedad Google Analytics 4.
  • Ya se abordan otras fuentes potenciales de discrepancias, p.ej., la zona horaria de los informes.

Total de usuarios

Recuento exacto con COUNT(DISTINCT):

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

Recuento aproximado con APPROX_COUNT_DISTINCT:

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

Puedes replicar APPROX_COUNT_DISTINCT con funciones HLL++ de BigQuery. Esto mostrará resultados idénticos o muy similares a los de 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_*`

Por último, para replicar los datos en la IU de Google Analytics, usa 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_*`

Usuarios activos

Para calcular el recuento de usuarios activos desde la tabla de exportación de eventos de BigQuery, primero debes filtrar los eventos solo por usuarios activos. La implementación del filtro Usuario activo está fuera del alcance de este artículo.

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

Sesiones

El parámetro del evento ga_session_id identifica sesiones individuales únicas para cada usuario. La combinación de user_pseudo_id y ga_session_id será única en tu conjunto de datos para sesiones únicas. Este es el método estándar para contar sesiones de las propiedades Google Analytics 4. Para las sesiones, precision es 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_*`

Puedes usar consultas en esta entrada de blog con los ejemplos de consultas básicas y consultas avanzadas para obtener estadísticas adicionales de los datos de exportación de eventos de BigQuery para tus propiedades Google Analytics 4. Si tu propiedad genera una cantidad significativa de datos de eventos, también puedes implementar las funciones HLL++ para estimar la cardinalidad de otras métricas que sueles usar en tus consultas de BigQuery. Si deseas obtener más información sobre HLL++ y por qué el cálculo de cardinalidad es costoso para conjuntos de datos grandes, consulta la entrada detallada en la entrada de blog del blog de Cloud: Using HLL++ to speed up count-distint in enorme datasets.