Consultas básicas de datos exportados de eventos de Google Analytics 4

Las consultas de ejemplo que aparecen en esta página se aplican a los datos de eventos de Google Analytics 4 exportados a BigQuery. Consulta la guía paso a paso de BigQuery para Universal Analytics si buscas este mismo recurso, pero para esa versión de Analytics.

Todas las consultas que se muestran en este artículo usan conjuntos de datos de muestra y deberían dar resultados válidos. Para usar los datos de eventos de tu propiedad de Google Analytics exportados a BigQuery con el conjunto de datos de muestra, busca el comentario -- Replace table de cada consulta de ese conjunto y sustituye su ID por el de tu conjunto de datos. Para encontrar el ID de tu conjunto de datos, accede a la UI de BigQuery y desplázate hasta tu proyecto exportado. Por ejemplo, si el ID de tu conjunto de datos exportado a BigQuery es my- first-gcp-project:analytics_28239234, sustituye:

  -- Replace table
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`

por:

  -- Replace table
  `my-first-gcp-project.analytics_28239234.events_*`

Consultar datos de un periodo concreto

Para consultar datos de un periodo específico de un conjunto de datos de eventos exportado a BigQuery, usa la pseudocolumna _TABLE_SUFFIX de la cláusula WHERE de la consulta. Si quieres obtener más información, lee el artículo sobre cómo filtrar tablas seleccionadas usando _TABLE_SUFFIX.

Por ejemplo, la siguiente consulta devuelve el recuento de eventos únicos que tienen unos nombres concretos y que corresponden a un periodo específico de días, organizados por fecha y nombre:

-- Example: Query a specific date range for selected events.
--
-- Counts unique events by date and by event name for a specifc period of days and
-- selected events(page_view, session_start, and purchase).

SELECT
  event_date,
  event_name,
  COUNT(*) AS event_count
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name IN ('page_view', 'session_start', 'purchase')
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY 1, 2;

Recuento de usuarios y de usuarios nuevos

  • Para obtener el recuento total de usuarios, se cuenta el número de user_id distintos. Sin embargo, si tu cliente de Google Analytics no devuelve una respuesta user_id con cada hit o si no sabes si lo hace, puedes contar el número de user_pseudo_id distintos.
  • Para obtener el recuento de usuarios nuevos, puedes usar el mismo método explicado en el punto anterior, pero con los siguientes valores de event_name:
-- Example: Get 'Total User' count and 'New User' count.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      MAX(IF(event_name IN ('first_visit', 'first_open'), 1, 0)) AS is_new_user
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201101' AND '20201130'
    GROUP BY 1
  )
SELECT
  COUNT(*) AS user_count,
  SUM(is_new_user) AS new_user_count
FROM UserInfo;

Media de transacciones por comprador

La siguiente consulta devuelve la media de transacciones por comprador:

-- Example: Average number of transactions per purchaser.

SELECT
  COUNT(*) / COUNT(DISTINCT user_pseudo_id) AS avg_transaction_per_purchaser
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name IN ('in_app_purchase', 'purchase')
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201231';

Valores de un nombre de evento específico

La siguiente consulta devuelve el objeto event_timestamp de todos los eventos purchase y los valores de los parámetros asociados a dichos eventos:

-- Example: Query values for a specific event name.
--
-- Queries the individual timestamps and values for all 'purchase' events.

SELECT
  event_timestamp,
  (
    SELECT COALESCE(value.int_value, value.float_value, value.double_value)
    FROM UNNEST(event_params)
    WHERE key = 'value'
  ) AS event_value
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'purchase'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202';

La consulta anterior se puede modificar para que devuelva la suma de los valores de los parámetros de los eventos en lugar de una lista:

-- Example: Query total value for a specific event name.
--
-- Queries the total event value for all 'purchase' events.

SELECT
  SUM(
    (
      SELECT COALESCE(value.int_value, value.float_value, value.double_value)
      FROM UNNEST(event_params)
      WHERE key = 'value'
    ))
    AS event_value
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'purchase'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202';

Los 10 artículos más añadidos al carrito

La siguiente consulta devuelve los 10 artículos más añadidos al carrito por los usuarios:

-- Example: Top 10 items added to cart by most users.

SELECT
  item_id,
  item_name,
  COUNT(DISTINCT user_pseudo_id) AS user_count
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_web_ecommerce.events_*`, UNNEST(items)
WHERE
  -- Replace date range.
  _TABLE_SUFFIX BETWEEN '20201101' AND '20210131'
  AND event_name IN ('add_to_cart')
GROUP BY
  1, 2
ORDER BY
  user_count DESC
LIMIT 10;

Media de páginas vistas por tipo de comprador (compradores frente a no compradores)

La siguiente consulta devuelve la media de páginas vistas por tipo de usuario (compradores frente a no compradores):

-- Example: Average number of pageviews by purchaser type.

WITH
  UserInfo AS (
    SELECT
      user_pseudo_id,
      COUNTIF(event_name = 'page_view') AS page_view_count,
      COUNTIF(event_name IN ('in_app_purchase', 'purchase')) AS purchase_event_count
    -- Replace table name.
    FROM `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
    -- Replace date range.
    WHERE _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
    GROUP BY 1
  )
SELECT
  (purchase_event_count > 0) AS purchaser,
  COUNT(*) AS user_count,
  SUM(page_view_count) AS total_page_views,
  SUM(page_view_count) / COUNT(*) AS avg_page_views,
FROM UserInfo
GROUP BY 1;

Secuencia de páginas vistas

La siguiente consulta devuelve la secuencia de las páginas vistas por los usuarios durante sesiones únicas:

-- Example: Sequence of pageviews.

SELECT
  user_pseudo_id,
  event_timestamp,
  (SELECT value.int_value FROM UNNEST(event_params) WHERE key = 'ga_session_id') AS ga_session_id,
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_location')
    AS page_location,
  (SELECT value.string_value FROM UNNEST(event_params) WHERE key = 'page_title') AS page_title
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`
WHERE
  event_name = 'page_view'
  -- Replace date range.
  AND _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
ORDER BY
  user_pseudo_id,
  ga_session_id,
  event_timestamp ASC;

Lista de parámetros de evento

La siguiente consulta enumera todos los parámetros de evento que aparecen en tu conjunto de datos:

-- Example: List all available event parameters and count their occurrences.

SELECT
  EP.key AS event_param_key,
  COUNT(*) AS occurrences
FROM
  -- Replace table name.
  `bigquery-public-data.ga4_obfuscated_sample_ecommerce.events_*`, UNNEST(event_params) AS EP
WHERE
  -- Replace date range.
  _TABLE_SUFFIX BETWEEN '20201201' AND '20201202'
GROUP BY
  event_param_key
ORDER BY
  event_param_key ASC;

Combinar con Google Ads

Para obtener datos de Google Ads adicionales para tus eventos de GA4, configura BigQuery Data Transfer Service para Google Ads y combina el collected_traffic_source.gclid de los datos de eventos de GA4 con el campo gclid de ads_ClickStats_customer_id de la transferencia de Google Ads.

Ten en cuenta que la exportación de datos de eventos de GA4 crea una tabla por cada día, mientras que la transferencia de Google Ads solo rellena una tabla ads_ClickStats_customer_id por cliente.