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

Cómo calcular churn mensual en DAX: paso a paso

João Barros 23 de July de 2026 3 min de lectura

Este tutorial muestra cómo calcular el churn mensual en DAX para saber cuántos clientes se perdieron entre meses y cuál es la tasa de churn. Calcular el churn mensual en DAX es útil para producto, marketing y reporting porque ayuda a medir retención e identificar problemas a tiempo.

Prerrequisitos

  • Power BI Desktop (u otro motor con soporte para DAX).
  • Tabla Transactions con al menos las columnas Transactions[CustomerID] y Transactions[Date].
  • Tabla Date (calendar) ligada a Transactions[Date] y marcada como Date table.
  • Conocimientos básicos de DAX y de visualizaciones (matriz/gráfico de líneas).

Paso 1: Crear y marcar la tabla de fechas

El cálculo temporal necesita una tabla de fechas continua y marcada como Date table. Sin ella, PREVIOUSMONTH y otras funciones de Time Intelligence no funcionan correctamente.

Date =
VAR MinD = MIN( Transactions[Date] )
VAR MaxD = MAX( Transactions[Date] )
RETURN
ADDCOLUMNS(
  CALENDAR( MinD, MaxD ),
  "Year", YEAR([Date]),
  "MonthNumber", MONTH([Date])
)

Paso 2: Medida de clientes activos (por período)

Empieza por una medida que cuente clientes activos en el contexto de filtro (por ejemplo, por mes en la fila de la matriz).

Clientes Activos = DISTINCTCOUNT( Transactions[CustomerID] )

Paso 3: Clientes en el mes anterior

Usa PREVIOUSMONTH para obtener el número de clientes en el mes anterior al contexto actual. Esta medida sirve de denominador cuando calcular la tasa de churn.

Clientes Mês Anterior =
CALCULATE(
  [Clientes Activos],
  PREVIOUSMONTH( 'Date'[Date] )
)

Paso 4: Calcular clientes perdidos (churn) en DAX

Aquí usamos conjuntos de customer IDs: clientes del mes anterior menos clientes del mes actual. EXCEPT devuelve los IDs que salieron del conjunto actual.

Clientes Perdidos =
VAR PrevCustomers =
  CALCULATETABLE( VALUES( Transactions[CustomerID] ), PREVIOUSMONTH('Date'[Date]) )
VAR CurrCustomers =
  VALUES( Transactions[CustomerID] )
RETURN
  COUNTROWS( EXCEPT( PrevCustomers, CurrCustomers ) )

Paso 5: Medida de la tasa de churn mensual

Calcula la tasa dividiendo los clientes perdidos por el total de clientes en el mes anterior. Usa DIVIDE para evitar división por cero.

Taxa Churn Mensal =
VAR Perdidos = [Clientes Perdidos]
VAR PrevAtivos = [Clientes Mês Anterior]
RETURN
  DIVIDE( Perdidos, PrevAtivos )

Paso 6: Buenas prácticas y errores comunes

Puntos principales a comprobar:

  • Marca la tabla Date como Date table (Modeling > Mark as date table). Sin esto, PREVIOUSMONTH puede fallar.
  • PREVIOUSMONTH funciona cuando el contexto temporal es mensual; en un informe con granularidad diaria ajusta la lógica (ej.: DATEADD con -30 días no es lo mismo que mes anterior).
  • COUNTROWS(EXCEPT(...)) puede ser costoso en modelos con muchos clientes. Si detectas problemas de rendimiento, considera pre-calcular flags (ETL) o usar agregaciones.
  • El primer mes del periodo no tiene mes anterior — DIVIDE garantiza que no aparezcan errores por división por cero.

Verificar el resultado

Crea un visual Matrix con 'Date'[Year] y un campo de mes (o 'Date'[Date] formateado por mes) en las filas, y las medidas Clientes Mês Anterior, Clientes Perdidos y Taxa Churn Mensal en las columnas. Verifica:

  • Clientes Perdidos nunca excede Clientes Mês Anterior.
  • Taxa Churn Mensal = Clientes Perdidos / Clientes Mês Anterior (verifica algunos meses con cálculo manual).
  • Valores nulos en el primer mes (sin mes anterior) deben aparecer como en blanco o 0, dependiendo del formato.

Conclusión

Con estas medidas tienes un churn mensual en DAX fiable para monitorizar retención. Próximos pasos: segmentar churn por producto, calcular churn por cohorts o crear medias móviles para suavizar ruido. Pista: ¿quieres ver churn por cohort (mes de adquisición)? — ¿prefieres que te muestre ese ejemplo?