Skip to main content
Version: V3 (Ignition 8.3)

OEE Calculation Record

Overview​

The OeeCalculationRecord entity stores pre-computed OEE metrics for a single location over a fixed time period. Records are generated automatically at period close and may also be rebuilt on demand. Each record captures the full set of OEE results — availability, performance, quality, OEE, utilization, TEEP, duration breakdowns, event counts, and production metrics — that would otherwise require a full on-the-fly calculation from raw OeeRecord, OeeStateRecord, and OeeModeRecord data.

Table Structure​

The following table outlines the SQL columns for the oee_calculation_records table, providing a brief description of each, along with sample data where applicable.

ColumnTypeUniquenessDescriptionExample
idString (ULID)UniqueUnique identifier for the entity.01JAP8RJBN-8ZTPXSGY-J9GSDPE1
enabledBooleanIf the entity is enabled or not.true
created_dateDateTimeDate the entity was created.2025-01-15T08:00:00Z
created_byStringPerson who created the entity.TamakiMES
modified_dateDateTimeDate the entity was last modified.2025-01-15T08:00:00Z
modified_byStringLast person to modify the entity.TamakiMES
notesStringNotes about the entity.This entity has these extra notes
spare1StringFirst spare column for additional context.some extra context 1
spare2StringSecond spare column for additional context.some extra context 2
spare3StringThird spare column for additional context.some extra context 3
location_idString (ULID)Unique with period_type, start_dateReferences the location this record is for. No database constraint. Required.01JAP8R5RT-3FPXQABY-7KQZT6VF
period_typeString (Enum)Unique with location_id, start_dateGranularity of this record (HOUR, DAY, WEEK, MONTH, SHIFT). Required.HOUR
start_dateInstantUnique with location_id, period_typeStart of the period bucket. Required.2025-01-15T08:00:00Z
end_dateInstantEnd of the period bucket. Required.2025-01-15T09:00:00Z
shift_record_idString (ULID)References the ShiftRecord whose time window was used. No database constraint. Null unless period_type = SHIFT.01JAP8RJBN-8ZTPXSGY-J9GSDPE1
calculated_dateInstantTimestamp of when this record was last computed. Required.2025-01-15T09:01:00Z
availabilityDoubleAvailability as a decimal (0.0–1.0). Null if not enough data to calculate.0.92
performanceDoublePerformance as a decimal (0.0–1.0). Null if not enough data to calculate.0.87
qualityDoubleQuality as a decimal (0.0–1.0). Null if not enough data to calculate.0.99
oeeDoubleOverall Equipment Effectiveness as a decimal (0.0–1.0). Null if not enough data to calculate.0.79
utilizationDoubleUtilization as a decimal (0.0–1.0). Null if not enough data to calculate.0.95
teepDoubleTotal Effective Equipment Performance as a decimal (0.0–1.0). Null if not enough data to calculate.0.75
total_duration_secDoubleTotal elapsed seconds in the period window. Default 0.3600.0
scheduled_duration_secDoubleSeconds the location was in a scheduled production mode. Default 0.3420.0
running_duration_secDoubleSeconds the location was in a Running state. Default 0.3150.0
downtime_duration_secDoubleSeconds the location was in a Downtime state. Default 0.270.0
blocked_duration_secDoubleSeconds the location was in a Blocked state. Default 0.60.0
starved_duration_secDoubleSeconds the location was in a Starved state. Default 0.45.0
idle_duration_secDoubleSeconds the location was in an Idle state. Default 0.180.0
scheduled_downtime_duration_secDoubleSeconds in a scheduled downtime mode. Default 0.120.0
unscheduled_downtime_duration_secDoubleSeconds in an unscheduled downtime mode. Default 0.60.0
running_state_event_countIntegerNumber of Running state transitions in the period. Default 0.4
downtime_state_event_countIntegerNumber of Downtime state transitions in the period. Default 0.3
blocked_state_event_countIntegerNumber of Blocked state transitions in the period. Default 0.1
starved_state_event_countIntegerNumber of Starved state transitions in the period. Default 0.2
idle_state_event_countIntegerNumber of Idle state transitions in the period. Default 0.1
scheduled_production_mode_event_countIntegerNumber of scheduled production mode transitions. Default 0.2
scheduled_downtime_mode_event_countIntegerNumber of scheduled downtime mode transitions. Default 0.1
unscheduled_downtime_mode_event_countIntegerNumber of unscheduled downtime mode transitions. Default 0.1
production_countDoubleTotal actual units produced in the period. Default 0.1800.0
expected_production_countDoubleTotal expected units based on the standard rate. Default 0.2100.0
waste_countDoubleTotal waste or reject units in the period. Default 0.18.0
good_countDoubleTotal good units in the period. Default 0.1782.0
average_standard_rateDoubleAverage standard production rate across all OEE records in the period (units/minute). Default 0.35.0
maximum_standard_rateDoubleMaximum standard production rate observed in the period (units/minute). Default 0.40.0
production_count_uom_idString (ULID)No database constraint. References the unit of measure for production and quality counts.01JAP8R5RT-3FPXQABY-7KQZT6VF

Field Details​

No-constraint foreign keys​

location_id, shift_record_id, and production_count_uom_id use no database-level constraint. This is intentional: calculation records are historical snapshots and must persist even if the referenced location, shift, or unit of measure is later deleted.

Unique constraint​

The combination of (location_id, period_type, start_date) is unique. For SHIFT records, start_date is the ShiftRecord's start time, which is already unique per location, so the same constraint applies naturally.

period_type​

Controls the granularity of the time bucket:

  • HOUR — one calendar hour (e.g., 14:00–15:00)
  • DAY — one calendar day (midnight to midnight in the gateway's configured time zone)
  • WEEK — one calendar week (Monday 00:00 to Sunday 23:59)
  • MONTH — one calendar month
  • SHIFT — a single shift instance, bounded by the referenced ShiftRecord's start and end times

shift_record_id​

Populated only when period_type = SHIFT. References the specific ShiftRecord instance whose time window was used as the calculation boundary. Null for all other period types.

OEE percentage fields​

availability, performance, quality, oee, utilization, and teep are stored as decimals between 0.0 and 1.0. A value of null indicates there was insufficient data to compute the metric for the period (for example, no scheduled production time).

calculated_date​

Records when this row was last computed. If a record is rebuilt (e.g., after a manual rebuild API call), calculated_date is updated to reflect the new computation time while start_date and end_date remain unchanged.