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 respuestauser_id
con cada hit o si no sabes si lo hace, puedes contar el número deuser_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.