PlantOps BI

KPI Library / Production

OEE (Overall Equipment Effectiveness)

Formula: Availability × Performance × Quality
Typical range: 40 to 60% typical; 85% is world-class discrete manufacturing

OEE measures how much good product a machine actually made versus what it could have made running full speed, all the time, with zero defects. It multiplies three losses together so nothing hides:

What good looks like

The often-quoted “world class is 85%” number comes from mature discrete manufacturing. Most plants measuring honestly for the first time land at 40 to 60%, and that is normal. A plant that jumps from 45% to 60% has effectively found a third more capacity without buying a single machine.

Watch for inflated OEE: excluding changeovers from planned time, using padded ideal rates, or measuring only bottleneck-friendly shifts. An OEE above 90% usually means the calculation is flattering someone.

OEE in Power BI (DAX)

With an hourly production fact (units, target rate, downtime minutes, scrap):

Availability % =
DIVIDE (
    SUM ( fact_production[run_minutes] ),
    SUM ( fact_production[planned_minutes] )
)

Performance % =
DIVIDE (
    SUM ( fact_production[units_produced] ),
    SUMX (
        fact_production,
        fact_production[run_minutes] / 60 * RELATED ( dim_line[ideal_rate_uph] )
    )
)

Quality % =
DIVIDE (
    SUM ( fact_production[units_produced] ) - SUM ( fact_production[scrap_units] ),
    SUM ( fact_production[units_produced] )
)

OEE % = [Availability %] * [Performance %] * [Quality %]

Keep the three components on the same visual as OEE itself. A single OEE number tells a plant manager something is wrong; the three components tell them where.

Common mistakes

  1. Averaging OEE across lines. Always recompute from the summed components; an average of ratios weights a slow line the same as your biggest producer.
  2. Ideal rate drift. If engineering quietly lowers the ideal rate, OEE “improves” while output doesn’t. Version your rate table.
  3. Mixing planned and unplanned downtime. Both matter, but they belong to different owners: scheduling owns changeovers, maintenance owns breakdowns.