Manufacturing Analytics in Power BI: OEE, Quality, and Throughput

Build a Power BI manufacturing dashboard covering OEE calculation, quality metrics, production throughput, downtime analysis, and SPC charts — with complete DAX formulas.

E
ECOSIRE Research and Development Team
|19 de marzo de 202613 min de lectura2.8k Palabras|

Parte de nuestra serie Manufacturing in the AI Era

Leer la guía completa

Análisis de fabricación en Power BI: OEE, calidad y rendimiento

Las instalaciones de fabricación de clase mundial funcionan con una OEE superior al 85 %. El fabricante medio trabaja al 60%. Esa brecha de 25 puntos porcentuales se traduce directamente en capacidad: una instalación que mejora del 60 % al 85 % de OEE agrega un 41 % más de producción sin una sola máquina nueva o alquiler. La diferencia entre lo de clase mundial y lo promedio casi siempre no es el equipo, sino la visibilidad para ver los desechos y los datos para eliminarlos.

Power BI, conectado a MES (Sistema de ejecución de fabricación) y datos de ERP, proporciona esa visibilidad. Esta guía crea una plataforma completa de análisis de fabricación que cubre el cálculo de OEE, gráficos de SPC de calidad, análisis de la causa raíz del tiempo de inactividad y gestión del rendimiento, con las fórmulas DAX precisas que necesitan los ingenieros de fabricación.

Conclusiones clave

  • OEE = Disponibilidad × Rendimiento × Calidad (clase mundial = 85%+)
  • Cada componente de OEE requiere flujos de datos separados: registros de tiempo de inactividad, recuentos de producción, registros de desechos
  • Los gráficos SPC (control estadístico de procesos) en Power BI utilizan elementos visuales personalizados o límites de control calculados
  • El análisis de Pareto del tiempo de inactividad (el 20 % de las razones principales causan el 80 % del tiempo de inactividad) impulsa la mejora priorizada
  • El rendimiento de la primera pasada (FPY) y los defectos por millón de oportunidades (DPMO) son los KPI de calidad clave
  • El análisis de rendimiento compara la capacidad real con la teórica utilizando la teoría de cuellos de botella
  • Los conjuntos de datos de transmisión de Power BI permiten que los paneles OEE se actualicen casi en tiempo real cada minuto.
  • La integración de ERP (Odoo Manufacturing, SAP PP, Dynamics 365 SCM) proporciona un contexto de orden de trabajo

Modelo de datos para análisis de fabricación

Tablas de fabricación de núcleos

Production_Runs (una fila por ejecución de producción/orden de trabajo):

ColumnaDescripción
CÓDIGO0Orden de trabajo o ID de ejecución de producción
CÓDIGO0FK a Dimensión de la máquina
CÓDIGO0FK al producto
CÓDIGO0FK para cambiar
CÓDIGO0Ejecutar fecha y hora de inicio
CÓDIGO0Ejecutar fecha y hora de finalización
CÓDIGO0Inicio programado
CÓDIGO0Fin previsto
CÓDIGO0Cantidad de producción objetivo
CÓDIGO0Unidades reales producidas
CÓDIGO0Unidades que pasan el control de calidad
CÓDIGO0Unidades defectuosas
CÓDIGO0Unidades que requieren reelaboración
CÓDIGO0Segundos por unidad a la velocidad de diseño

Downtime_Events (una fila por parada):

ColumnaDescripción
CÓDIGO0Identificación única
CÓDIGO0FK a la máquina
CÓDIGO0FK a ejecución de producción (si corresponde)
CÓDIGO0Inicio del tiempo de inactividad
CÓDIGO0Fin del tiempo de inactividad
CÓDIGO0Duración total del tiempo de inactividad
CÓDIGO0Planificado (PM, cambio) / No planificado
CÓDIGO0Código de motivo específico
CÓDIGO0Descripción
CÓDIGO0Bandera de mantenimiento planificado
CÓDIGO0Tiempo hasta que el técnico respondió
CÓDIGO0Tiempo de reparación activo

Quality_Events (una fila por defecto/inspección):

ColumnaDescripción
CÓDIGO0Identificación única
CÓDIGO0FK a la producción
CÓDIGO0FK a la máquina
CÓDIGO0Fecha/hora de la inspección
CÓDIGO0FK al tipo de defecto
CÓDIGO0Número de defectos encontrados
CÓDIGO0Unidades inspeccionadas
CÓDIGO0Medición variable (para SPC)
CÓDIGO0Booleano: dentro de la tolerancia

Dim_Machine:

  • MachineID, MachineName, Line, Cell, Department, MachineType, IdealRunRate, PlannedCapacity

Dim_Shift:

  • ShiftID, ShiftName, StartTime, EndTime, PlannedMinutes, PlannedBreakMinutes

Cálculo de OEE en Power BI

OEE = Disponibilidad × Rendimiento × Calidad

Disponibilidad

Disponibilidad = Tiempo de ejecución real / Tiempo de producción planificado

// Planned Production Time (from shift schedule minus planned downtime)
Planned Production Time =
SUMX(
    Production_Runs,
    DATEDIFF(Production_Runs[PlannedStartTime],
              Production_Runs[PlannedEndTime], MINUTE)
)

// Unplanned Downtime (excludes scheduled maintenance, changeovers)
Unplanned Downtime =
CALCULATE(
    SUM(Downtime_Events[DurationMinutes]),
    Downtime_Events[DowntimeCategory] = "Unplanned"
)

// Changeover Time (planned but reduces availability)
Changeover Time =
CALCULATE(
    SUM(Downtime_Events[DurationMinutes]),
    Downtime_Events[DowntimeReasonCode] = "CHANGEOVER"
)

// Actual Run Time
Actual Run Time = [Planned Production Time] - [Unplanned Downtime] - [Changeover Time]

// OEE Availability
Availability =
DIVIDE([Actual Run Time], [Planned Production Time], 0)

Rendimiento

Rendimiento = (Tiempo de ciclo ideal × Conteo total) / Tiempo de ejecución real O equivalente: producción real / producción máxima teórica

// Theoretical Maximum Output at ideal run rate
Theoretical Max Output =
SUMX(
    Production_Runs,
    [Actual Run Time Per Run] / Production_Runs[IdealCycleTime]
)

// Actual total output (good + scrap + rework)
Total Output =
SUM(Production_Runs[ActualQuantity])

// OEE Performance
Performance =
DIVIDE([Total Output], [Theoretical Max Output], 0)

// Performance per machine (for benchmarking)
Machine Performance =
DIVIDE(
    SUMX(Production_Runs, Production_Runs[ActualQuantity]),
    SUMX(Production_Runs,
        DATEDIFF(Production_Runs[StartTime], Production_Runs[EndTime], MINUTE) /
        RELATED(Dim_Machine[IdealCycleTime]) * 60
    ),
    0
)

Calidad

Calidad = Buen resultado/Resultado total (excluye todos los defectos)

// Good Quantity (first pass, no rework)
Good Quantity = SUM(Production_Runs[GoodQuantity])

// Total Quantity Produced (good + scrap + rework)
Total Quantity = SUM(Production_Runs[ActualQuantity])

// OEE Quality
Quality Rate =
DIVIDE([Good Quantity], [Total Quantity], 0)

// First Pass Yield (no rework, no scrap)
First Pass Yield =
DIVIDE(
    SUM(Production_Runs[GoodQuantity]),
    SUM(Production_Runs[ActualQuantity]),
    0
)

OEE general

// Overall Equipment Effectiveness
OEE =
[Availability] * [Performance] * [Quality Rate]

// OEE Status (for conditional formatting)
OEE Status =
SWITCH(TRUE(),
    [OEE] >= 0.85, "World Class",    -- 85%+
    [OEE] >= 0.75, "Good",           -- 75-85%
    [OEE] >= 0.60, "Acceptable",     -- 60-75%
    "Poor"                            -- <60%
)

// OEE Loss Analysis (what is the primary constraint)
Primary OEE Constraint =
SWITCH(TRUE(),
    [Availability] < [Performance] && [Availability] < [Quality Rate], "Availability",
    [Performance] < [Quality Rate], "Performance",
    "Quality"
)

// OEE trend (for sparkline visualization)
OEE Weekly Avg =
CALCULATE(
    [OEE],
    DATESINPERIOD(Date[Date], LASTDATE(Date[Date]), -7, DAY)
)

Análisis del tiempo de inactividad

KPI de tiempo de inactividad y Pareto

// Total Unplanned Downtime Hours
Unplanned Downtime Hours =
DIVIDE(
    CALCULATE(
        SUM(Downtime_Events[DurationMinutes]),
        Downtime_Events[DowntimeCategory] = "Unplanned"
    ),
    60,
    0
)

// Mean Time Between Failures (MTBF)
MTBF =
DIVIDE(
    [Actual Run Time],
    CALCULATE(COUNTROWS(Downtime_Events),
              Downtime_Events[DowntimeCategory] = "Unplanned"),
    0
)

// Mean Time to Repair (MTTR)
MTTR =
AVERAGEX(
    FILTER(Downtime_Events, Downtime_Events[DowntimeCategory] = "Unplanned"),
    Downtime_Events[RepairTimeMinutes]
)

// Downtime % by reason (for Pareto chart)
Downtime Pareto % =
DIVIDE([Unplanned Downtime Hours],
    CALCULATE([Unplanned Downtime Hours], ALL(Downtime_Events[DowntimeReasonCode])),
    0
)

// Cumulative Downtime % (for Pareto 80/20 line)
Cumulative Downtime % =
DIVIDE(
    SUMX(
        FILTER(
            ALL(Downtime_Events[DowntimeReasonCode]),
            RANKX(ALL(Downtime_Events[DowntimeReasonCode]),
                  [Unplanned Downtime Hours], , DESC) <=
            RANKX(ALL(Downtime_Events[DowntimeReasonCode]),
                  [Unplanned Downtime Hours], , DESC)
        ),
        [Unplanned Downtime Hours]
    ),
    CALCULATE([Unplanned Downtime Hours], ALL(Downtime_Events[DowntimeReasonCode])),
    0
)

Mapa de calor de tiempo de inactividad

Cree un mapa de calor del tiempo de inactividad por máquina × hora del día para identificar patrones relacionados con los turnos:

// Downtime by Hour of Day (for heatmap rows)
Downtime by Hour =
CALCULATE(
    SUM(Downtime_Events[DurationMinutes]),
    Downtime_Events[HourOfDay] = SELECTEDVALUE(HourDim[Hour])
)

Análisis de calidad: gráficos SPC

Los gráficos de control estadístico de procesos monitorean si un proceso está bajo control. Power BI crea gráficos SPC mediante cálculos de límites de control en DAX.

Límites de control para el gráfico de barras X

// Process Mean (X-bar)
Process Mean =
AVERAGE(Quality_Events[MeasuredValue])

// Standard Deviation of measurements
Process StdDev =
STDEV.P(Quality_Events[MeasuredValue])

// Upper Control Limit (UCL = mean + 3σ)
UCL = [Process Mean] + 3 * [Process StdDev]

// Lower Control Limit (LCL = mean - 3σ)
LCL = [Process Mean] - 3 * [Process StdDev]

// Upper Warning Limit (mean + 2σ)
UWL = [Process Mean] + 2 * [Process StdDev]

// Lower Warning Limit (mean - 2σ)
LWL = [Process Mean] - 2 * [Process StdDev]

// Out of Control flag (point outside 3σ limits)
Out of Control =
IF(
    Quality_Events[MeasuredValue] > [UCL] ||
    Quality_Events[MeasuredValue] < [LCL],
    "Out of Control",
    "In Control"
)

// Process Capability Index (Cpk)
Cpk =
MIN(
    DIVIDE([UCL] - [Process Mean], 3 * [Process StdDev], 0),
    DIVIDE([Process Mean] - [LCL], 3 * [Process StdDev], 0)
)

KPI clave de calidad

// Defects per Million Opportunities (DPMO)
DPMO =
DIVIDE(
    SUM(Quality_Events[DefectCount]),
    SUM(Quality_Events[SampleSize]) * [Opportunities per Unit],
    0
) * 1000000

// Sigma Level (from DPMO)
Sigma Level =
SWITCH(TRUE(),
    [DPMO] < 3.4, 6,
    [DPMO] < 233, 5,
    [DPMO] < 6210, 4,
    [DPMO] < 66807, 3,
    [DPMO] < 308537, 2,
    1
)

// Defect Rate %
Defect Rate = DIVIDE(SUM(Quality_Events[DefectCount]), SUM(Quality_Events[SampleSize]), 0)

// Scrap Rate
Scrap Rate =
DIVIDE(
    SUM(Production_Runs[ScrapQuantity]),
    SUM(Production_Runs[ActualQuantity]),
    0
)

// Cost of Poor Quality (COPQ)
COPQ =
SUMX(
    Production_Runs,
    (Production_Runs[ScrapQuantity] + Production_Runs[ReworkQuantity]) *
    RELATED(Dim_Product[StandardCost])
)

Análisis de rendimiento

KPI de rendimiento de producción

// Actual Throughput (units per hour)
Throughput =
DIVIDE(
    SUM(Production_Runs[ActualQuantity]),
    SUMX(Production_Runs,
        DATEDIFF(Production_Runs[StartTime], Production_Runs[EndTime], HOUR)
    ),
    0
)

// Theoretical Maximum Throughput
Max Throughput =
SUMX(
    Dim_Machine,
    60 / Dim_Machine[IdealCycleTime]  -- Units per minute × 60
) * 60  -- Per hour

// Capacity Utilization
Capacity Utilization =
DIVIDE([Throughput], [Max Throughput], 0)

// Schedule Attainment (actual vs planned quantity)
Schedule Attainment =
DIVIDE(
    SUM(Production_Runs[ActualQuantity]),
    SUM(Production_Runs[PlannedQuantity]),
    0
)

// Changeover Time (as % of planned time)
Changeover % =
DIVIDE(
    [Changeover Time],
    [Planned Production Time],
    0
)

Análisis de equilibrio de línea

Identifique las máquinas con cuellos de botella mediante la comparación de rendimiento:

// Machine Throughput Rate (for bottleneck identification)
Machine Throughput Rate =
DIVIDE(
    CALCULATE(SUM(Production_Runs[GoodQuantity])),
    CALCULATE(
        DATEDIFF(MIN(Production_Runs[StartTime]),
                 MAX(Production_Runs[EndTime]), HOUR)
    ),
    0
)

// Bottleneck indicator (lowest throughput machine in a line)
Is Bottleneck =
IF(
    [Machine Throughput Rate] = MINX(
        FILTER(ALL(Dim_Machine), Dim_Machine[Line] = SELECTEDVALUE(Dim_Machine[Line])),
        [Machine Throughput Rate]
    ),
    "Bottleneck",
    "OK"
)

Arquitectura del panel de fabricación

Página 1: Resumen de OEE

  • Indicador OEE (objetivo actual frente al objetivo de clase mundial del 85 %)
  • Disponibilidad, Rendimiento, Calidad: tres tarjetas KPI
  • Tendencia OEE 30 días (gráfico de líneas)
  • OEE por máquina (gráfico de barras, ordenado de menor a mayor)
  • OEE por turno (gráfico de barras: identifique las diferencias en el rendimiento de los turnos)
  • Mapa de calor OEE (Máquina × Día de la semana)

Página 2: Análisis del tiempo de inactividad

  • Total de horas de inactividad no planificadas (tarjeta KPI)
  • MTBF y MTTR (dos tarjetas KPI)
  • Pareto de tiempo de inactividad (barra de combinación + línea con % acumulado)
  • Tiempo de inactividad por máquina (gráfico de barras horizontales)
  • Tiempo muerto por turno (barra agrupada)
  • Tendencia de tiempo de inactividad de 90 días (gráfico de líneas)
  • Eventos de tiempo de inactividad activos (tabla en tiempo real si se transmite)

Página 3: Panel de calidad

  • Rendimiento de la primera pasada (medidor versus objetivo)
  • DPMO y Sigma Level (tarjetas KPI)
  • Tasa de desechos por producto (gráfico de barras)
  • Tendencia COPQ (gráfico de líneas que muestra el costo de los problemas de calidad)
  • Defecto Pareto por código de defecto
  • Gráfico SPC (gráfico de líneas con líneas de referencia UCL, LCL, UWL, LWL)

Página 4: Rendimiento y capacidad

  • % de cumplimiento del cronograma (indicador)
  • Producción real vs planificada (barra agrupada por día)
  • Utilización de la capacidad por máquina (mapa de calor)
  • Análisis del tiempo de cambio (gráfico de barras por producto/máquina)
  • Tendencia de la producción (gráfico de áreas, real frente a objetivo)
  • Tabla destacada de máquinas de cuellos de botella

Preguntas frecuentes

¿Qué es OEE y por qué es importante para la fabricación?

OEE (Eficacia general del equipo) es la métrica estándar de oro para la productividad de fabricación. Combina tres factores: Disponibilidad (el equipo funciona cuando debería), Rendimiento (funciona a la velocidad adecuada) y Calidad (produce buenas piezas). Un OEE del 60 % significa que está aprovechando solo el 60 % de su capacidad teórica; el otro 40 % es desperdicio. La mejora de la OEE aumenta directamente la producción sin necesidad de invertir capital en nuevos equipos.

¿Se puede conectar Power BI a sistemas MES para OEE en tiempo real?

Sí, la mayoría de los sistemas MES (Ignition SCADA, GE Proficy, Siemens MES, Rockwell FactoryTalk) admiten conectividad de bases de datos (SQL Server, Oracle) o acceso a API REST. Power BI se conecta a estas bases de datos y puede usar conjuntos de datos de transmisión para actualizaciones casi en tiempo real (cada 30 segundos a 1 minuto). Para una OEE real en tiempo real (menos de un segundo), use Azure IoT Hub o Event Hub con conjuntos de datos de Power BI Streaming enviados directamente desde los sensores de la planta.

¿Qué datos necesita una fábrica para comenzar a realizar un seguimiento de la OEE?

Requisitos mínimos de datos para OEE básica: (1) Datos de recuento de producción: cuándo funcionó la máquina y cuántas unidades se produjeron, (2) Eventos de tiempo de inactividad: cuándo se detuvo la máquina y por qué, (3) Recuentos de calidad: cuántas unidades buenas y defectuosas. Esto puede provenir de la entrada manual del operador (Excel/papel → Power BI), datos básicos del contador MES o PLC. No se requieren datos perfectos para comenzar; incluso la visibilidad imperfecta de la OEE impulsa la mejora.

¿Cómo creo un gráfico SPC en Power BI?

Cree un gráfico de líneas con los valores de medición como serie principal. Agregue cuatro medidas adicionales (UCL, LCL, UWL, LWL) como series de líneas separadas en el gráfico. Formatee UCL/LCL como líneas discontinuas rojas y UWL/LWL como líneas discontinuas naranjas. El formato condicional en puntos de datos resalta en rojo los puntos fuera de control. El objeto visual personalizado SPC integrado de AppSource proporciona detección de reglas de Western Electric (ejecuciones por encima/debajo del centro, tendencias, etc.) más allá del enfoque de límite de control básico.

¿Cuál es un cronograma realista para implementar un panel de fabricación de Power BI?

Se puede crear un panel de OEE básico (una sola máquina, entrada manual de datos a través de una lista de SharePoint o Excel) en 1 o 2 semanas. Una plataforma completa de análisis de fabricación conectada a MES y ERP (multimáquina, multilínea, con SPC de calidad, Pareto de tiempo de inactividad y análisis de rendimiento) suele tardar entre 6 y 12 semanas. La fase más larga es siempre la integración y la calidad de los datos: las marcas de tiempo de las máquinas, los códigos de motivo de tiempo de inactividad y los cambios de productos deben capturarse de manera consistente antes de que los análisis agreguen valor.

¿Cómo conecta ECOSIRE Power BI con Odoo Manufacturing?

Odoo Manufacturing almacena órdenes de trabajo de producción, consumo de materiales, controles de calidad y solicitudes de mantenimiento en PostgreSQL. ECOSIRE conecta Power BI directamente a la base de datos PostgreSQL de Odoo (en una réplica de lectura) y modela las tablas de fabricación (mrp.production, mrp.workcenter, Quality.check, Maintenance.request) en el modelo de datos OEE descrito en esta guía. Manejamos la planificación de capacidad a nivel de centro de trabajo y la integración de calidad como parte de nuestra práctica de integración de Odoo ERP.


Próximos pasos

Los análisis de fabricación en Power BI, cuando se conectan a los datos de su planta de producción, brindan la visibilidad en tiempo real que separa a los fabricantes de clase mundial de los de desempeño promedio. La OEE, el análisis de la causa raíz del tiempo de inactividad y los gráficos SPC de calidad brindan a los equipos de operaciones la información para mejorar antes de que los problemas se agraven.

ECOSIRE crea paneles de fabricación conectados a sistemas MES, plataformas ERP (Odoo, SAP, Dynamics 365) y flujos de datos de IoT. Nuestros servicios de desarrollo de paneles de Power BI cubren toda la pila de análisis de fabricación, desde el diseño del modelo de datos hasta los paneles listos para producción.

Póngase en contacto con nuestro equipo de análisis de fabricación para analizar las fuentes de datos de su planta y diseñar una plataforma de análisis de Power BI que impulse una mejora mensurable de la OEE.

E

Escrito por

ECOSIRE Research and Development Team

Construyendo productos digitales de nivel empresarial en ECOSIRE. Compartiendo perspectivas sobre integraciones Odoo, automatización de eCommerce y soluciones empresariales impulsadas por IA.

Chatea en whatsapp