Saltar al contenido
Telemetry
Análisis de producto receta SQL

Calcular la retención de cohorte semanal

Agrupe a los usuarios por primera semana de actividad y mida el porcentaje que regresa en semanas posteriores.

Avanzadoproduct_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

¿Qué porcentaje de cada cohorte de registro regresa entre las semanas uno y doce?

Una tasa de retención única combina usuarios maduros y recién adquiridos. Las cohortes conservan la semana de inicio para que los cambios de productos o adquisiciones se puedan comparar en términos iguales.

Contrato de evento

Campos que espera la consulta

CampoTipoPor que existe
timestamp_utcTimestampCuándo ocurrió la actividad.
user_idUtf8Identificador de usuario estable.
event_nameUtf8Nombre del evento del producto.
DataFusionSQL

Copiar la consulta

sql
WITH first_activity AS (
  SELECT
    user_id,
    date_trunc('week', MIN(timestamp_utc)) AS cohort_week
  FROM product_events
  WHERE event_name = 'first_value_completed'
  GROUP BY user_id
),
weekly_activity AS (
  SELECT DISTINCT
    user_id,
    date_trunc('week', timestamp_utc) AS activity_week
  FROM product_events
  WHERE event_name = 'core_feature_used'
),
cohort_activity AS (
  SELECT
    f.cohort_week,
    (date_part('epoch', a.activity_week)
      - date_part('epoch', f.cohort_week)) / 604800 AS week_number,
    COUNT(DISTINCT a.user_id) AS retained_users
  FROM first_activity f
  JOIN weekly_activity a ON f.user_id = a.user_id
  WHERE a.activity_week >= f.cohort_week
  GROUP BY
    f.cohort_week,
    (date_part('epoch', a.activity_week)
      - date_part('epoch', f.cohort_week)) / 604800
),
cohort_sizes AS (
  SELECT cohort_week, COUNT(*) AS cohort_size
  FROM first_activity
  GROUP BY cohort_week
)
SELECT
  c.cohort_week,
  c.week_number,
  c.retained_users,
  s.cohort_size,
  100.0 * c.retained_users / NULLIF(s.cohort_size, 0) AS retention_pct
FROM cohort_activity c
JOIN cohort_sizes s ON c.cohort_week = s.cohort_week
WHERE c.week_number BETWEEN 0 AND 12
ORDER BY c.cohort_week, c.week_number;

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

Retención semanal por cohorte de activación

La cohorte de mayor edad retuvo a la mitad de sus usuarios en la primera semana; la cohorte más nueva aún no está lo suficientemente madura para una comparación de la primera semana.

cohort_weekweek_numberretained_userscohort_sizeretention_pct
2026-07-20044100
2026-07-2012450
2026-07-27033100

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

Weekly retention by activation cohort: gráfico estático de valores sintéticos de retention_pct del resultado del ejemplo Calculate Weekly Cohort Retention
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 primer CTE define la cohorte de cada usuario desde la semana en que completaron por primera vez el hito de valor.
  2. 2La actividad semanal se deduplica, por lo que varios eventos en una semana cuentan como un usuario retenido.
  3. 3La diferencia de marca de tiempo se convierte de días a un desplazamiento semanal que se puede comparar entre cohortes.

Casos extremos para decidir

  • Excluya semanas futuras incompletas al comparar cohortes de diferentes edades.
  • Defina el comportamiento de retorno de una actividad significativa en lugar de cualquier vista de página.
  • Es posible que los límites de la semana UTC no coincidan con la zona horaria comercial; documentar el límite elegido.

Panel recomendado

  • Tabla estilo mapa de calor: cohort_week de week_number
  • Gráfico de líneas: retention_pct por week_number dividido por cohort_week
  • Estadística: retención de la semana cuatro de la cohorte madura

Guía de alerta

La retención generalmente se revisa como una tendencia en lugar de paginarse. Marque cohortes maduras cuando la retención de la semana uno o la semana cuatro caiga fuera del rango esperado.

Leer configuración de alerta

Pon la receta a trabajar

Instrumentación y guías relacionadas.

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