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

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:

  1. Tener una tabla en Power BI (por ejemplo, Ventas) con columnas:
    • SKU: Identificador único de ítems.
    • Cantidad: Cantidad vendida.
    • ValorUnitario: Precio unitario.
    • Opcionalmente, Peso: Para análisis basado en peso.
  2. Verificar que los tipos de datos sean correctos (numérico para Cantidad, ValorUnitario, Peso; texto para SKU).
  3. 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
)
      
💡 Tip: Si solo usas valor económico o peso, simplifica la fórmula eliminando la condición no relevante. Asegúrate de que las columnas existan en tu modelo de datos.

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
      
📌 Nota: 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"
)
      
🎨 Personalización: Ajusta los límites (70, 90, 100) si necesitas otros umbrales. Usa una tabla de parámetros en Power BI para bins dinámicos.

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()
)
      
💡 Uso: Coloca esta medida en una tarjeta o tabla, y filtra por 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):

  1. Configuración del visual:
    • Eje X: Columna SKU.
    • Barras (Y1): Medida [Total].
    • Línea (Y2): Medida [PorcentajeAcumulado].
  2. Ordenación: Ordena el eje X por Total (descendente).
  3. 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).
  4. Formato:
    • Barras: Azul claro (#87CEEB).
    • Línea: Rojo (#FF0000).
    • Título: "Análisis ABC por Valor/Peso".
    • Activa la cuadrícula y rota las etiquetas del eje X a 45°.
📊 Resultado esperado: Un gráfico que muestra el valor total por ítem (barras) y el porcentaje acumulado (línea), con líneas horizontales en 70% y 90% para marcar las categorías A, B, C.

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 de Total.
  • 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

  1. Validaciones: DAX no valida dinámicamente la existencia de columnas. Usa Power Query para limpiar y preparar datos antes de aplicar DAX.
  2. Optimización: Si trabajas con grandes volúmenes de datos, considera optimizar las medidas con SUMMARIZE o tablas calculadas para mejorar el rendimiento.
  3. Interactividad: Añade segmentaciones (slicers) para filtrar por categorías o períodos de tiempo, haciendo el informe más dinámico.
  4. Bins dinámicos: Para umbrales personalizables, crea una tabla de parámetros en Power BI y usa SELECTEDVALUE en las fórmulas DAX.

Ejemplo de visualización en Power BI

Crea un informe con:

  • Tabla: Muestra SKU, Total, Categoria, y PorcentajeAcumulado.
  • Tarjetas: Muestra TotalGeneral, ItemsPorSegmento, y PorcentajeSegmento por categoría.
  • Gráfico de Pareto: Visual combinado con barras y línea.
  • Segmentaciones: Para filtrar por categoría o rango de fechas.
📈 Impacto visual: Usa colores corporativos, fuentes legibles (como Segoe UI), y un diseño limpio para impresionar a tu audiencia.

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.

Entradas populares de este blog

Cómo Equilibrar Múltiples Productos con Pedidos a la Medida

Maximiza la rentabilidad de tu negocio: Cómo optimizar la selección de proveedores de mercancías.

Descubriendo el Poder de los Modelos de Clasificación en Machine Learning: Predicciones Precisas y Clasificaciones Sorprendentes

Optimización del Inventario Multiproducto en Espacios Reducidos: Una guía para la eficiencia en gestión de stocks

Domina tu Almacén sin arruinarte: El Juego del Modelo de Inventario Múltiproductos con Presupuesto ajustado

¡Plan Desagregado de Producción como un jefe!

El Desafío del Empaque en Contenedores: Optimizando Espacios en contenedores con Ingenio

¡Optimización de Portafolios de Productos: El arte de maximizar el rendimiento!