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.