Aproximación de recuento único en Google Analytics

Minhaz Kazi, Developer Advocate, Google Analytics – Octubre de 2022

Medir recuentos exactos distintos (es decir, cardinalidad) de grandes conjuntos de datos requiere una cantidad considerable de memoria y afecta el rendimiento. que usan las propiedades Google Analytics 4 Algoritmo HyperLogLog++ (HLL++) para estimar la cardinalidad de las métricas más usadas. incluidos los de Usuarios activos y Sesiones. Por ejemplo, al ver Activos Usuarios en la IU de Google Analytics, así como a través de la API de datos, el registro será una aproximación. El uso de HLL++ para estas métricas garantiza una mejor con una mayor precisión de estimación y límites de error más bajos. Esta La entrada de blog proporciona detalles sobre cómo se usa HLL++ en las propiedades Google Analytics 4. y cómo puedes replicar algunas de las estimaciones con la exportación de eventos de BigQuery de datos no estructurados.

Información acerca de HLL++

HLL++ estima la cardinalidad mientras usa menos memoria y mejora el rendimiento. HLL++ tiene aumentos realizados a través del algoritmo HyperLogLog y se basa en HyperLogLog en la práctica: Ingeniería algorítmica de una vanguardia Algoritmo de estimación de cardinalidad. Cambios en el parámetro precision de HLL++ entre el uso de memoria y la precisión de las estadísticas calculadas. Aumentar el valor del parámetro reduce 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 aproxima los resultados con HLL++. Sin embargo, APPROX_COUNT_DISTINCT no permite que los usuarios configuren la aproximación exactitud.
  • Para usar valores precision personalizados, usa funciones HyperLogLog++. Consulta Bocetos de HLL++ para los valores precision permitidos y la confianza para obtener precisiones típicas.
  • sparse precision es otro parámetro para HLL+. En BigQuery, el usuario no puede definir el valor de sparse precision y se fija en precision + 5.

Implementación de HLL++ en las 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

Usa 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 puede intentar hacer coincidir las métricas de la IU con datos de BigQuery. Los siguientes ejemplos: supón:

  • El identificador de informes se estableció en By device only para Google Analytics 4 propiedad.
  • Otras fuentes potenciales de discrepancia, p.ej., de la zona horaria de los informes, y abordarse.

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 usando 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 las funciones HLL++ de BigQuery. Esta Se mostrarán resultados idénticos o muy similares a 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 a partir de la tabla de exportación de eventos de BigQuery, primero debes filtrar los eventos solo para los Usuarios activos. Al implementar las campañas El filtro de usuario 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 únicas individuales para para cada usuario. La combinación de user_pseudo_id y ga_session_id será únicos en todo el conjunto de datos para sesiones únicas. Este es el método estándar de para 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 las Consultas básicas y Ejemplos de consultas avanzadas para obtener estadísticas adicionales de los eventos de BigQuery exportar datos para tus propiedades Google Analytics 4. Si tu propiedad genera de datos de eventos, también puedes implementar las funciones HLL++ para para estimar la cardinalidad de otras métricas que usas comúnmente en tu para tus consultas. Para obtener más información sobre HLL++ y por qué el procesamiento de cardinalidad es costoso. Para conjuntos de datos grandes, lee la entrada de blog detallada en el blog de Cloud: Uso de HLL++ para acelerar el recuento de valores en conjuntos de datos masivos.