Esquema del evento
Campos que espera la consulta
| Campo | Tipo | Por que existe |
|---|---|---|
| timestamp_utc | Timestamp | Cuándo ocurrió el evento del producto. |
| user_id | Utf8 | Identificador de usuario estable. |
| event_name | Utf8 | Nombre del hito snake_case estable. |
| source | Utf8 | Fuente de adquisición o campaña. |
Copiar la consulta
WITH events AS (
SELECT user_id, event_name, timestamp_utc
FROM product_events
WHERE timestamp_utc >= now() - INTERVAL '30 days'
),
signups AS (
SELECT user_id, MIN(timestamp_utc) AS signed_up_at
FROM events WHERE event_name = 'signup_completed'
GROUP BY user_id
),
onboarding AS (
SELECT s.user_id, s.signed_up_at, MIN(e.timestamp_utc) AS onboarded_at
FROM signups AS s
LEFT JOIN events AS e ON e.user_id = s.user_id
AND e.event_name = 'onboarding_completed'
AND e.timestamp_utc >= s.signed_up_at
GROUP BY s.user_id, s.signed_up_at
),
integrations AS (
SELECT o.user_id, o.signed_up_at, o.onboarded_at,
MIN(e.timestamp_utc) AS integrated_at
FROM onboarding AS o
LEFT JOIN events AS e ON e.user_id = o.user_id
AND e.event_name = 'integration_connected'
AND e.timestamp_utc >= o.onboarded_at
GROUP BY o.user_id, o.signed_up_at, o.onboarded_at
),
user_funnel AS (
SELECT i.user_id, i.signed_up_at, i.onboarded_at, i.integrated_at,
MIN(e.timestamp_utc) AS activated_at
FROM integrations AS i
LEFT JOIN events AS e ON e.user_id = i.user_id
AND e.event_name = 'first_value_completed'
AND e.timestamp_utc >= i.integrated_at
GROUP BY i.user_id, i.signed_up_at, i.onboarded_at, i.integrated_at
),
stage_counts AS (
SELECT 1 AS step_order, 'Signed up' AS step, COUNT(signed_up_at) AS users
FROM user_funnel
UNION ALL
SELECT 2, 'Onboarded', COUNT(onboarded_at) FROM user_funnel
UNION ALL
SELECT 3, 'Integrated', COUNT(integrated_at) FROM user_funnel
UNION ALL
SELECT 4, 'Activated', COUNT(activated_at) FROM user_funnel
)
SELECT
step_order,
step,
users,
100.0 * users
/ NULLIF(MAX(CASE WHEN step_order = 1 THEN users END) OVER (), 0)
AS conversion_from_signup_pct,
100.0 * users
/ NULLIF(LAG(users) OVER (ORDER BY step_order), 0)
AS conversion_from_previous_pct
FROM stage_counts
ORDER BY step_order;Esta consulta de solo lectura se planifica y ejecuta en una tabla escrita vacía con Apache DataFusion 45.2.0. El resultado de la muestra determinista es sintético y se revisa por separado; valide tipos de campos, umbrales y definiciones comerciales con sus propios datos. Lea la metodología de prueba.
Resultado de la consulta
Embudo de registro para activación
La mayor pérdida absoluta se produce antes de que se complete la incorporación, mientras que la integración sigue siendo el cuello de botella posterior más fuerte.
| step_order | step | users | conversion_from_signup_pct | conversion_from_previous_pct |
|---|---|---|---|---|
| 1 | Signed up | 8 | 100 | — |
| 2 | Onboarded | 6 | 75 | 75 |
| 3 | Integrated | 4 | 50 | 66,67 |
| 4 | Activated | 3 | 37,5 | 75 |
Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.
Reproducir el ejemplo
Descarga los datos de ejemplo
El paquete JSON incluye el contrato de evento escrito, reproducible filas de entrada, SQL exacto, resultado esperado, notas de revisión y versión del motor. El CSV contiene el resultado mostrado.
Cómo funciona el SQL
- 1Each CTE selects the first milestone at or after the previous eligible stage, retaining one row per signed-up user.
- 2A missing or out-of-order milestone blocks all later steps. A later valid retry can advance the user, and duplicates count once.
- 3La consulta informa tanto la conversión desde el registro como la conversión desde el paso anterior, lo que hace visibles juntos el rendimiento total y la mayor pérdida de transición.
- 4Los nombres de los eventos deben representar hitos completados, no visitas a páginas o clics en botones que no demuestren que el usuario logró el paso.
Casos límite que debes comprobar
- Utilice una ventana de cohorte basada en el tiempo de registro y deje suficiente tiempo para que se activen los registros recientes.
- Los eventos que llegan tarde pueden hacer retroceder temporalmente a los usuarios en un embudo calculado recientemente.
- Segmente por fuente de adquisición solo después de que el embudo total tenga suficiente volumen.
Panel recomendado
- Barras de embudo: usuarios por paso
- Gráfico de líneas: tasa de activación por semana de registro
- Tabla: conversión por fuente, plan o persona
Guía de alerta
Utilice una alerta de baja urgencia cuando la activación de un grupo de registro maduro caiga materialmente por debajo de su línea de base reciente.
Leer configuración de alertaConfigura los eventos que necesita esta consulta
Instrumentación y guías relacionadas.
Definir los datos de origen
Esquemas de eventos para este análisis.
user_signed_up
Un evento de asiento de cuenta duradero con contexto de adquisición y plan. Mantenga la identidad seudónima y capture la atribución de marketing solo después de una revisión de privacidad.
Revisar esquemaproduct_milestone_completed
Un sobre de hitos genérico para resultados estables del producto, como conectar una fuente, ejecutar una primera consulta o publicar un panel.
Revisar esquemaContinuar el análisis
Cuenta los pasos registrados de un prototipo estudiantil
Ejecuta SQL sobre 18 eventos ficticios de ocho intentos de prueba. Cuenta los intentos distintos en cada paso sin confundir la ausencia de un evento con una prueba de abandono.
Receta abiertaCalcular la retención de cohorte semanal
Agrupe a los usuarios por primera semana de actividad y mida el porcentaje que regresa en semanas posteriores.
Receta abiertaEncuentre funciones utilizadas antes de la actualización
Únase a eventos destacados para actualizar eventos y clasificar comportamientos que ocurren antes de la conversión paga.
Receta abiertaEjecútalo con tus eventos
Crea una tabla, adapta los campos y guarda el resultado.
Comience gratis, envíe eventos estructurados y utilice el resultado de la consulta como un gráfico, un widget de panel compartido o una entrada de alerta.