Análisis de embudo SQL
Un embudo mide cómo progresa una población definida a través de hitos. El SQL es sencillo sólo después de que la definición del producto es precisa: quién ingresa, si los pasos deben ocurrir en orden, cuánto tiempo tienen los usuarios para progresar, qué identidad representa a una persona o cuenta, y cómo se comportan los reintentos y los eventos duplicados.
Reducir eventos a una fila por actor
WITH events AS (
SELECT account_id, event_name, timestamp_utc
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
),
signups AS (
SELECT account_id, MIN(timestamp_utc) AS signed_up_at
FROM events WHERE event_name = 'signup_completed'
GROUP BY account_id
),
workspaces AS (
SELECT s.account_id, s.signed_up_at,
MIN(e.timestamp_utc) AS workspace_created_at
FROM signups AS s
LEFT JOIN events AS e ON e.account_id = s.account_id
AND e.event_name = 'workspace_created'
AND e.timestamp_utc >= s.signed_up_at
GROUP BY s.account_id, s.signed_up_at
),
account_steps AS (
SELECT w.account_id, w.signed_up_at, w.workspace_created_at,
MIN(e.timestamp_utc) AS first_event_sent_at
FROM workspaces AS w
LEFT JOIN events AS e ON e.account_id = w.account_id
AND e.event_name = 'first_event_sent'
AND e.timestamp_utc >= w.workspace_created_at
GROUP BY w.account_id, w.signed_up_at, w.workspace_created_at
)
SELECT
COUNT(*) AS accounts_seen,
COUNT(signed_up_at) AS signed_up,
COUNT(workspace_created_at) AS created_workspace,
COUNT(first_event_sent_at) AS sent_first_event
FROM account_steps;
Cada etapa conserva una fila por cuenta y selecciona el primer hito que ocurre en el momento de la etapa válida anterior o después. Un hito ausente o fuera de orden bloquea todas las etapas posteriores; un reintento válido posterior permite avanzar. Los eventos duplicados cuentan una sola vez y se aceptan marcas de tiempo iguales. Añada una ventana máxima de conversión si la progresión debe ocurrir dentro de un período fijo.
Mantenga distintas las ventanas de cohorte y de observación
Si la consulta incluye registros de ayer, esas cuentas han tenido menos tiempo para activarse que las cuentas de principios de mes. Permita que cada cohorte tenga una ventana de observación completa o etiquete las cohortes recientes como incompletas. Filtrar todos los eventos en el mismo rango del calendario puede cortar involuntariamente hitos posteriores válidos.
Elija un identificador de cuenta para la activación a nivel de cuenta y un identificador de usuario para el comportamiento a nivel de persona. No cambies de identidad entre pasos. Defina cómo funcionan las cuentas fusionadas, las sesiones anónimas, las cuentas reabiertas y las finalizaciones repetidas.
Muestre siempre el recuento de pasos junto a los porcentajes. Un cambio de conversión puede provenir del numerador, denominador, combinación de tráfico o instrumentación. Los modelos receta del embudo de registro y guía de tasa de conversión probados proporcionan un punto de partida completo. Utilice Retención de cohorte cuando la pregunta sea un comportamiento continuo después de la activación.