Retention matrix drops cohorts where nobody did the return event
Los mantenedores suelen responder en 1 día
@officialasishkumar ya está trabajando en esto.
Desde el 7/11/2026.
- #659 de @officialasishkumar — abierto
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Error
- Claridad
- Bien especificado
- Estado de actividad
- Estancado
- Stack tecnológico
- sql, typescript
Línea de trabajo
Start by reading packages/core/src/modules/chart/src/retention.sql.ts, especially retentionCohortQuery, and trace how cohorts and return events feed the matrix and Weighted Average. Check the tests for the retention query and its MCP and API consumers. Done means cohorts with no return events still appear with zero values and their users are included in the Weighted Average; an open linked pull request indicates work is already underway.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Description
In a retention report, a cohort none of whose users ever did the return event has no row in the matrix. With different start and return events (for example app_open, then purchase), those periods are missing from the table. Their users are also left out of the Weighted Average, which pools only cohorts with at least one return, so retention is overstated. When nobody has done the return event yet, the whole report looks like it has no data.
The MCP and API retention endpoints read the same query, so they have the same gap.
Steps to reproduce
- Create a retention report with start event
app_openand return eventpurchase, interval Day. - Pick a range where users who opened the app on one day never purchased.
- That day is missing from the matrix, and the Weighted Average divides only by the other cohorts.
Root cause
retentionCohortQuery (packages/core/src/modules/chart/src/retention.sql.ts) selects FROM interval_users LEFT JOIN cohort_sizes. interval_users is built from the inner join of cohort members with their return events, so a cohort with no returning user has no row there and drops out of the result.
Expected behavior
Every cohort appears with its size and zeros for the periods where nobody returned, and the Weighted Average includes those users.
- Lenguaje dominante
- TypeScript
- Estrellas
- 7.3k
- Forks
- 539
- Merge medio
- 1 d 20 h
- PR fusionados (30 d)
- 80
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Sin guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de Openpanel-dev/openpanel
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
Openpanel-dev/openpanel#653 · 1 reacción ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 73/100
Openpanel-dev/openpanel#610 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
Openpanel-dev/openpanel#661 ·
Los mantenedores suelen responder en 1 día
-
Conversion breakdowns drop every later day once the series limit is reachedPosiblemente ocupada @officialasishkumar la tomó hace 2 días. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 35/100
Openpanel-dev/openpanel#655 ·
Los mantenedores suelen responder en 1 día
-
View Users on a chart point returns nobody for weekly charts and for organizations outside UTCPosiblemente ocupada @officialasishkumar la tomó hace 2 días. Abierto
Dificultad 3/5 1-2 días Aptitud para principiantes 35/100
Openpanel-dev/openpanel#654 ·
Los mantenedores suelen responder en 1 día
Todos los issues de Openpanel-dev/openpanel
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Azure/azure-functions-nodejs-extensions#180 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Los mantenedores suelen responder en 2 días
-
iso-bmff: add IsoBoxReadView.readUint64 and IsoBoxWriteView.writeUint64 for exact 64-bit fieldsAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
streaming-video-technology-alliance/common-media-library#611 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
prime-radiant-inc/evener#5901 ·
Los mantenedores suelen responder en 1 día
-
area:frontend kind:bug priority:p3 ready
Dificultad 2/5 1-3 horas Aptitud para principiantes 88/100
Los mantenedores suelen responder en 1 día