Obtener número de sesiones en BigQuery para GA4

,

Calcular el número de sesiones en BigQuery con los datos extraídos de Google Analytics 4 es una de las consultas más comunes que puedes hacer, pero que a la vez puede darte dolores de cabeza, ya que hay dos principales formas de hacerlo y dependiendo cuál elijas tus datos variarán.

Lo primero que debes de tener en cuenta cuando quieras contar sesiones es que el valor ga_session_id encontrado en los parámetros no tiene por qué ser único y dos usuarios podrían tener el mismo ga_session_id, por ello tendrás que unir el parámetro ga_session_id con user_pseudo_id lo que te permitirá crear un identificador único de sesión.

Extraer número de sesiones como lo hace GA4 en interfaz

El propio Google nos explica en su documentación que ellos utilizan funciones HyperLogLog++ las cuales son funciones que ofrecen resultados agregados aproximados, pero a su vez requieren de menos memoria que el uso de COUNT(DISTINCT) y por ello su ejecución es más rápida.

El uso de HyperLogLog++ puede estar justificado en casos de que requieras mejorar el rendimiento de tus consultas si consumes conjuntos de datos extremadamente grandes, sin embargo, no es adecuado su uso en casos que se requiera una precisión absoluta.

Google nos cuenta en su documentación que ellos utilizan un valor de precisión de 12, en sus funciones HyperLogLog++, a continuación la consulta propuesta por Google:

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_*`;

Extraer número de sesiones de GA4 de manera más precisa

Si requieres un dato más preciso del que puedes obtener en la interfaz o usando la función HyperLogLog++, te recomendamos usar COUNT(DISTINCT), de este modo tu consulta será algo más lenta de procesar, pero tus estadísticas incluirán menos errores.

SELECT
  COUNT(DISTINCT session_id) AS sessions
FROM
  (
    SELECT
      CONCAT(
        user_pseudo_id,
        (
          SELECT
            value.int_value
          FROM
            UNNEST (event_params)
          WHERE
            key = 'ga_session_id'
        )
      ) AS session_id
    FROM
      `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    GROUP BY
      session_id
  );

Otra manera de escribirlo con el mismo resultado en caso de preferir añadir la consulta en el SELECT principal, los tiempos de ejecución son bastante similares:

SELECT
  COUNT(DISTINCT(
    CONCAT(
        user_pseudo_id,
        (
          SELECT
            value.int_value
          FROM
            UNNEST (event_params)
          WHERE
            key = 'ga_session_id'
        )
      ))) AS sessions
FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`;

Advertencia, siempre se recomienda añadir un filtro de fechas mediante _TABLE_SUFFIX o añadiendo la fecha de la tabla directamente para que tu consulta sea del periodo deseado y evitar que tus costes se disparen.

Ahora que ya sabes las dos maneras de obtener el número de sesiones de Google Analytics 4 con tus datos de BigQuery, es hora de ponerlo en práctica. Espero que te haya servido de ayuda esta guía.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *