Cómo calcular turnover de clientes en DAX: paso a paso
Este tutorial muestra cómo calcular el turnover de clientes en DAX —es decir, el porcentaje de clientes que dejaron de comprar entre dos períodos— útil para monitorizar pérdida de clientes y eficacia de la retención. Vamos a explicar el porqué, usar funciones temporales y crear medidas reutilizables para obtener porcentajes claros por mes o año.
Prerequisitos
- Power BI Desktop con un modelo simple: tabla de Vendas (CustomerID, OrderDate, Sales) y Tabela de Datas ligada a OrderDate.
- Conocimientos básicos de DAX: medidas, CALCULATE, FILTER, DISTINCT.
- Fechas continuas en la Tabela de Datas y relación activa entre Tabela de Datas y Vendas.
Paso 1: Entender la definición de turnover
El turnover de clientes normalmente se define como clientes perdidos en un período dividido por el total de clientes en el período anterior. Necesitamos calcular: (a) clientes en el período anterior, (b) clientes que existían en el período anterior y no compraron en el período actual. Tener claridad evita confusiones entre churn, adquisición y retención.
Paso 2: Crear medida para clientes distintos en el período
Crea una medida que cuente clientes distintos en Vendas respetando el contexto temporal. Esta medida es la base para otros cálculos (clientes en el mes, trimestre, año).
Clientes Distintos = DISTINCTCOUNT(Vendas[CustomerID])
Paso 3: Medida para clientes en el período anterior
Usamos la función SAMEPERIODLASTYEAR, PARALLELPERIOD o DATEADD según el período que queramos comparar. Aquí mostramos con DATEADD para flexibilidad (mes anterior, año anterior según el contexto).
Clientes Período Anterior =
CALCULATE(
[Clientes Distintos],
DATEADD('TabelaDatas'[Date], -1, MONTH)
)
Paso 4: Identificar clientes perdidos entre períodos
Para obtener clientes perdidos necesitamos el conjunto de clientes que compraron en el período anterior pero no en el período actual. Implementamos una medida que usa FILTER con EXCEPT o funciones de relación para comparar conjuntos de CustomerID.
Clientes Perdidos =
VAR ClientesPrev = CALCULATETABLE(
VALUES(Vendas[CustomerID]),
DATEADD('TabelaDatas'[Date], -1, MONTH)
)
VAR ClientesNow = CALCULATETABLE(
VALUES(Vendas[CustomerID])
)
RETURN
COUNTROWS(EXCEPT(ClientesPrev, ClientesNow))
Paso 5: Calcular el turnover (porcentaje)
Con los dos numeradores (Clientes Perdidos) y denominador (Clientes Período Anterior) calculamos el porcentaje. Usa DIVIDE para evitar división por cero y formatea como porcentaje en Power BI.
Turnover Clientes (%) =
DIVIDE(
[Clientes Perdidos],
[Clientes Período Anterior],
0
)
Paso 6: Tratar casos comunes y filtros
Errores comunes: (1) relaciones de fecha ausentes conducen a valores incorrectos; (2) usar contexto inapropiado cuando la visualización tiene filtros adicionales (segmentadores, categorías); (3) comparar períodos con volúmenes muy bajos genera porcentajes volátiles. Para respetar filtros de producto o región, las medidas ya utilizan el contexto actual. Si quieres comparar períodos fijos, encapsula DATEADD dentro de CALCULATE con ALL o ALLSELECTED según la necesidad.
Clientes Período Anterior (ignorar producto) =
CALCULATE(
[Clientes Distintos],
DATEADD('TabelaDatas'[Date], -1, MONTH),
ALL(Vendas[ProductID])
)
Verificar el resultado
Crea una tabla en Power BI con TabelaDatas[MonthYear], [Clientes Distintos], [Clientes Período Anterior], [Clientes Perdidos] y [Turnover Clientes (%)]. Confirma que:
- Clientes Período Anterior corresponde al mes anterior en el mismo contexto.
- Clientes Perdidos + Clientes Retenidos = Clientes Período Anterior (puedes crear Clientes Retenidos = Clientes Período Anterior - Clientes Perdidos para verificar).
- El Turnover presentado como porcentaje tiene sentido para picos/valles conocidos en los datos.
Conclusión
Ahora tienes medidas para calcular turnover de clientes en DAX que puedes adaptar (mes, trimestre, año) y filtrar por producto o región. Siguientes pasos: crear visualizaciones con líneas y tarjetas, comparar con adquisición de clientes o segmentar por cohorts. Consejo: prueba las medidas en períodos con volúmenes mayores para reducir ruido y añade una medida de Clientes Nuevos para ver el balance entre pérdida y adquisición.