Saltar al contenido
Telemetry
Análisis de producto receta SQL

Cree un embudo de registro para activación en SQL

Calcule la conversión de usuarios únicos mediante el registro, la incorporación, la integración y los hitos de primer valor.

Intermedioproduct_eventsRevisado 2026-07-27Probado con Apache DataFusion 45.2.0

Revisado por el equipo de producto Telemetry en . Compatibilidad con SQL, contrato de eventos, resultados sintéticos y advertencias operativas. Revisar los estándares y la propiedad

Pregunta respondida

¿Dónde se van los nuevos usuarios antes de alcanzar el primer valor?

Un embudo sólo es útil cuando cada paso tiene una definición de comportamiento. Esta consulta crea una fila por usuario, aplica el orden de los hitos y calcula la conversión desde el registro y desde el paso anterior.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampCuándo ocurrió el evento del producto.
user_idUtf8Identificador de usuario estable.
event_nameUtf8Nombre del hito snake_case estable.
sourceUtf8Fuente de adquisición o campaña.
DataFusionSQL

Copiar la consulta

sql
WITH user_funnel AS (
  SELECT
    user_id,
    MIN(CASE WHEN event_name = 'signup_completed'
      THEN timestamp_utc END) AS signed_up_at,
    MIN(CASE WHEN event_name = 'onboarding_completed'
      THEN timestamp_utc END) AS onboarded_at,
    MIN(CASE WHEN event_name = 'integration_connected'
      THEN timestamp_utc END) AS integrated_at,
    MIN(CASE WHEN event_name = 'first_value_completed'
      THEN timestamp_utc END) AS activated_at
  FROM product_events
  WHERE timestamp_utc >= now() - INTERVAL '30 days'
  GROUP BY user_id
),
stage_counts AS (
  SELECT 1 AS step_order, 'Signed up' AS step, COUNT(*) AS users
  FROM user_funnel
  WHERE signed_up_at IS NOT NULL
  UNION ALL
  SELECT 2, 'Onboarded', COUNT(*)
  FROM user_funnel
  WHERE onboarded_at >= signed_up_at
  UNION ALL
  SELECT 3, 'Integrated', COUNT(*)
  FROM user_funnel
  WHERE integrated_at >= onboarded_at
  UNION ALL
  SELECT 4, 'Activated', COUNT(*)
  FROM user_funnel
  WHERE activated_at >= integrated_at
)
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_orderstepusersconversion_from_signup_pctconversion_from_previous_pct
1Signed up8100
2Onboarded67575
3Integrated45066,67
4Activated337,575

Salida de ejemplo sintético. Ejecute la consulta con su propio esquema de eventos y umbrales antes de utilizarla para decisiones operativas.

Signup-to-activation funnel: gráfico estático de valores sintéticos de users del resultado del ejemplo Build a Signup-to-Activation Funnel in SQL
SVG indexable de la salida del ejemplo determinista. Descárguelo para ver un artículo, un runbook o una revisión de diseño con atribución.

Reproducir el ejemplo

Descargar el accesorio público

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

  1. 1El CTE user_funnel colapsa eventos repetidos en la primera marca de tiempo para cada hito.
  2. 2Las comparaciones de marcas de tiempo imponen el orden previsto, por lo que un evento fuera de secuencia no puede inflar un paso posterior.
  3. 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.
  4. 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 extremos para decidir

  • 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 alerta

Pon la receta a trabajar

Instrumentación y guías relacionadas.

Definir los datos de origen

Esquemas de eventos para este análisis.

Continuar el análisis

Ejecútelo en eventos reales.

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.

Obtén una clave API