(+351) 21 24 10006  ·  info@bconcepts.pt
Carnaxide, Lisboa

Cómo calcular la tasa de retención por cohortes en DAX: paso a paso

João Barros 27 de August de 2026 4 min de lectura

Este tutorial muestra cómo calcular la tasa de retención por cohorte en DAX: es decir, agrupar usuarios por su primera interacción (cohorte) y medir cuántos de esos usuarios regresan en los meses siguientes. El análisis por cohortes es útil para entender la retención, la eficacia del onboarding y el impacto de cambios en el producto.

Prerequisitos

  • Power BI Desktop (u otro entorno que soporte DAX).
  • Una tabla de eventos con columnas: UserID, EventDate (datetime) y EventType (opcional).
  • Tabla de fechas (date table) marcada como Date y relaciones entre Date[Date] y Event[EventDate].

Paso 1: Crear la columna First Purchase Month (cohorte)

Necesitamos identificar el mes de la primera interacción de cada usuario — esa será su cohorte. Vamos a crear una columna calculada en la tabla de usuarios o en la tabla de eventos (agrupar por UserID). Aquí usamos la tabla Event.

FirstEventMonth =
VAR FirstDate =
    CALCULATE(
        MIN(Event[EventDate]),
        ALLEXCEPT(Event, Event[UserID])
    )
RETURN
    STARTOFMONTH(FirstDate)

Explicación: CALCULATE + MIN encuentra la primera fecha por UserID; ALLEXCEPT garantiza que el contexto sea solo el usuario. STARTOFMONTH normaliza al primer día del mes, facilitando los agrupamientos mensuales.

Paso 2: Crear columna MonthOfEvent para comparación temporal

También necesitamos una columna con el mes del propio evento para comparar los meses transcurridos desde la cohorte.

EventMonth = STARTOFMONTH(Event[EventDate])

Esta columna es sencilla y normaliza cada evento al inicio del mes correspondiente.

Paso 3: Calcular months since cohort (meses desde la cohorte)

Ahora calculamos cuántos meses separan EventMonth y FirstEventMonth para pivotar la retención por mes (M0, M1, M2...).

MonthsSinceCohort =
DATEDIFF(Event[FirstEventMonth], Event[EventMonth], MONTH)

DATEDIFF en MONTH devuelve 0 para el mes de la cohorte, 1 para el mes siguiente, etc.

Paso 4: Crear la medida de usuarios únicos por cohorte y mes

Queremos contar cuántos usuarios únicos, por combinación de FirstEventMonth y MonthsSinceCohort, tuvieron al menos un evento. Creamos una medida para ello.

Users by Cohort =
CALCULATE(
    DISTINCTCOUNT(Event[UserID]),
    VALUES(Event[FirstEventMonth]),
    VALUES(Event[MonthsSinceCohort])
)

VALUES garantiza que el recuento respete el filtro de las columnas de cohorte y meses en el visual (tabla o matrix).

Paso 5: Crear la medida de cohort size (tamaño de la cohorte)

Para obtener la tasa de retención dividimos por el número de usuarios de la cohorte en el mes cero (M0). Creamos una medida que calcula el tamaño de la cohorte (usuarios en M0) para cada FirstEventMonth.

Cohort Size =
VAR CohortMonth = SELECTEDVALUE(Event[FirstEventMonth])
RETURN
CALCULATE(
    DISTINCTCOUNT(Event[UserID]),
    Event[FirstEventMonth] = CohortMonth,
    Event[MonthsSinceCohort] = 0
)

SELECTEDVALUE obtiene la cohorte del contexto actual. El filtro MonthsSinceCohort = 0 aísla solo a los usuarios en el mes inicial.

Paso 6: Medida de tasa de retención (retention rate)

Finalmente, calculamos el porcentaje que regresó en el mes N dividiendo Users by Cohort entre Cohort Size. Usamos DIVIDE para evitar divisiones por cero.

Retention Rate =
DIVIDE(
    [Users by Cohort],
    [Cohort Size],
    0
)

Esta medida devuelve valores entre 0 y 1; multiplica por 100 en el visual si quieres porcentaje.

Verificar el resultado

Crea una Matrix en Power BI con las filas siendo Event[FirstEventMonth] (cohorte), las columnas Event[MonthsSinceCohort] (ordenadas 0,1,2...) y valores siendo [Retention Rate] (formatear como porcentaje) y [Cohort Size] como referencia. Verifica si:

  • En la columna MonthsSinceCohort = 0, Retention Rate es 100% (o 1) porque cohort size se divide por sí misma.
  • Los números disminuyen gradualmente en meses posteriores, salvo picos justificados.
  • Si ves diferencias inesperadas, comprueba que las columnas FirstEventMonth y EventMonth estén correctas y que la tabla de fechas esté relacionada correctamente.

Conclusión

Con estas medidas tienes una base para análisis por cohortes en DAX: identificar cohortes, medir la retención mes a mes y comparar cohortes a lo largo del tiempo. Los próximos pasos incluyen ajustar para retención por semana, segmentar por canal o EventType, y crear heatmaps para la visualización. Consejo: usa filtros de fecha y segmentaciones para validar escenarios y confirma siempre que el primer evento esté correctamente calculado — ese error es muy común.