Análisis ABC en Power BI con DAX: Guía Completa para Profesionales

El análisis ABC es una técnica poderosa para clasificar ítems (como productos, clientes o inventarios) según su importancia relativa, comúnmente basada en valor económico o peso. En este artículo, te guiaremos paso a paso para implementar un análisis ABC en Power BI utilizando DAX. Si eres un apasionado de los datos buscando optimizar tus informes, ¡este post es para ti! 🚀
¿Qué es el análisis ABC y por qué usarlo en Power BI?
El análisis ABC clasifica ítems en tres categorías (A, B, C) según su contribución acumulada al total, siguiendo la regla del 80/20 (Principio de Pareto). Por ejemplo:
- Categoría A: ~20% de los ítems que aportan ~80% del valor (los más importantes).
- Categoría B: Ítems intermedios.
- Categoría C: Ítems con menor impacto.
En Power BI, el análisis ABC es ideal para priorizar recursos, optimizar inventarios o enfocar esfuerzos comerciales. Usando DAX, podemos automatizar este análisis y visualizarlo con gráficos impactantes, como el gráfico de Pareto.
Contexto DAX
Tomamos un análisis ABC basado en valor económico (Cantidad * ValorUnitario) o peso, y lo traducimos a DAX para Power BI. El código original calcula:
- Valor total por ítem.
- Porcentaje acumulado para clasificar ítems en A, B, C.
- Porcentajes por segmento y un resumen estadístico.
- Un gráfico de Pareto para visualización.
DAX no soporta clases ni gráficos directos, pero podemos replicar la lógica con columnas calculadas, medidas y visualizaciones nativas de Power BI. ¡Vamos a ello! 🎯
Requisitos previos
Antes de empezar, asegúrate de:
- Tener una tabla en Power BI (por ejemplo,
Ventas) con columnas: - Verificar que los tipos de datos sean correctos (numérico para
Cantidad,ValorUnitario,Peso; texto paraSKU). - Usar los límites por defecto para categorías:
[0, 70, 90, 100]para A (0-70%), B (70-90%), C (90-100%).
Implementación en DAX: Paso a paso
Paso 1: Calcular el valor total
Creamos una columna calculada para determinar el valor total por ítem, basado en valor económico o peso.
Total =
IF(
HASONEVALUE(Ventas[Peso]),
Ventas[Peso], // Análisis por peso
Ventas[Cantidad] * Ventas[ValorUnitario] // Análisis por valor económico
)
Paso 2: Calcular el porcentaje acumulado
Usamos medidas para simular este cálculo.
1. Total general:
TotalGeneral =
SUM(Ventas[Total])
2. Total acumulado:
TotalAcumulado =
CALCULATE(
SUM(Ventas[Total]),
FILTER(
ALLSELECTED(Ventas),
Ventas[Total] >= MAX(Ventas[Total])
)
)
3. Porcentaje acumulado:
PorcentajeAcumulado =
DIVIDE(
[TotalAcumulado],
[TotalGeneral],
0
) * 100
ALLSELECTED respeta los filtros aplicados en el informe, mientras que MAX(Ventas[Total]) simula el orden descendente.
Paso 3: Asignar categorías A, B, C
Creamos una columna calculada para clasificar ítems según el porcentaje acumulado.
Categoria =
VAR Porcentaje =
CALCULATE(
[PorcentajeAcumulado],
ALLEXCEPT(Ventas, Ventas[SKU])
)
RETURN
SWITCH(
TRUE(),
Porcentaje <= 70, "A",
Porcentaje <= 90, "B",
Porcentaje <= 100, "C",
"Sin Clasificar"
)
Paso 4: Porcentaje por segmento
Para replicar el método get_segment_percentage, creamos una medida que calcula el porcentaje del total por categoría.
PorcentajeSegmento =
VAR SegmentoSeleccionado = SELECTEDVALUE(Ventas[Categoria])
RETURN
IF(
NOT ISBLANK(SegmentoSeleccionado),
CALCULATE(
DIVIDE(
SUM(Ventas[Total]),
[TotalGeneral],
0
) * 100,
Ventas[Categoria] = SegmentoSeleccionado
),
BLANK()
)
Categoria (A, B, C) para ver el porcentaje.
Paso 5: Resumen estadístico
Para replicar el método print_summary, creamos medidas adicionales y las mostramos en visuales de Power BI.
1. Número de ítems por segmento:
ItemsPorSegmento =
CALCULATE(
COUNTROWS(Ventas),
ALLEXCEPT(Ventas, Ventas[Categoria])
)
2. Valor acumulado por segmento:
ValorSegmento =
CALCULATE(
SUM(Ventas[Total]),
ALLEXCEPT(Ventas, Ventas[Categoria])
)
3. Top 5 ítems:
En lugar de una medida, usa una tabla visual con las columnas SKU, Total, y Categoria, y aplica un filtro "Top N" (Top 5 por Total).
Visualización: Gráfico de Pareto en Power BI
El método plot_pareto genera un gráfico con barras (valor total) y una línea (porcentaje acumulado). En Power BI, creamos un visual combinado (barras y línea):
- Configuración del visual:
- Eje X: Columna
SKU. - Barras (Y1): Medida
[Total]. - Línea (Y2): Medida
[PorcentajeAcumulado].
- Eje X: Columna
- Ordenación: Ordena el eje X por
Total(descendente). - Líneas de umbral:
- En el panel de Analytics, agrega líneas constantes en 70% y 90% para
[PorcentajeAcumulado]. - Usa colores verde (para A) y naranja (para B).
- En el panel de Analytics, agrega líneas constantes en 70% y 90% para
- Formato:
Resumen de medidas y columnas
Columnas calculadas
Total: Valor económico (Cantidad * ValorUnitario) o peso.Categoria: Clasificación A, B, C según porcentaje acumulado.
Medidas
TotalGeneral: Suma total deTotal.TotalAcumulado: Suma acumulada por ítem.PorcentajeAcumulado: Porcentaje acumulado del total.PorcentajeSegmento: Porcentaje por categoría.ItemsPorSegmento: Conteo de ítems por categoría.ValorSegmento: Valor total por categoría.
Consejos para profesionales
- Validaciones: DAX no valida dinámicamente la existencia de columnas. Usa Power Query para limpiar y preparar datos antes de aplicar DAX.
- Optimización: Si trabajas con grandes volúmenes de datos, considera optimizar las medidas con SUMMARIZE o tablas calculadas para mejorar el rendimiento.
- Interactividad: Añade segmentaciones (slicers) para filtrar por categorías o períodos de tiempo, haciendo el informe más dinámico.
- Bins dinámicos: Para umbrales personalizables, crea una tabla de parámetros en Power BI y usa
SELECTEDVALUEen las fórmulas DAX.
Ejemplo de visualización en Power BI
Crea un informe con:
- Tabla: Muestra
SKU,Total,Categoria, yPorcentajeAcumulado. - Tarjetas: Muestra
TotalGeneral,ItemsPorSegmento, yPorcentajeSegmentopor categoría. - Gráfico de Pareto: Visual combinado con barras y línea.
- Segmentaciones: Para filtrar por categoría o rango de fechas.
Conclusión
Con esta implementación en DAX, puedes llevar el análisis ABC al siguiente nivel en Power BI, automatizando cálculos y creando visualizaciones impactantes. Este enfoque no solo replica la lógica del código Python, sino que aprovecha las capacidades de Power BI para generar informes interactivos y profesionales.
¿Listo para implementar tu análisis ABC? ¡Prueba estas fórmulas y comparte tus resultados! Si necesitas ayuda con personalizaciones, optimización o visualizaciones avanzadas, déjanos un comentario. 👇
¿Te gustó este artículo?
🔔 Suscríbete para más contenido sobre Power BI y análisis de datos.
📢 Comparte este post con tus colegas para optimizar sus informes.