---
title: oee.computeAPQ() function
description: 'oee.computeAPQ() computes availability, performance, and quality (APQ) and overall equipment effectiveness (OEE) using two separate input streams: production events and part events.'
url: https://docs.influxdata.com/flux/v0/stdlib/experimental/oee/computeapq/
estimated_tokens: 624
product: Flux
version: v0
publisher: InfluxData
canonical: https://docs.influxdata.com/flux/v0/stdlib/experimental/oee/computeapq/
date: '2024-04-08T16:01:02-06:00'
lastmod: '2024-04-08T16:01:02-06:00'
---

* Flux 0.112.0+

InfluxDB support

> [!Important]
> `oee.computeAPQ()` is experimental and [subject to change at any time](/flux/v0/stdlib/experimental/#experimental-packages-are-subject-to-change).

`oee.computeAPQ()` computes availability, performance, and quality (APQ)
and overall equipment effectiveness (OEE) using two separate input streams:**production events** and **part events**.

## Output schema

For each input table, `oee.computeAPQ` outputs a table with a single row and
the following columns:

* **\_time**: Timestamp associated with the APQ calculation.
* **availability**: Ratio of time production was in a running state.
* **oee**: Overall equipment effectiveness.
* **performance**: Ratio of production efficiency.
* **quality**: Ratio of production quality.
* **runTime**: Total nanoseconds spent in the running state.

##### Function type signature

```js
(
    idealCycleTime: A,
    partEvents: stream[B],
    plannedTime: C,
    productionEvents: stream[D],
    runningState: E,
) => stream[{
    F with
    runTime: H,
    quality: float,
    performance: float,
    oee: float,
    availability: float,
    _time: G,
    _stop: G,
}] where B: Record, D: Record, E: Equatable
```

For more information, see [Function type signatures](/flux/v0/function-type-signatures/).

## Parameters

### productionEvents

(Required)
Production events stream that contains the production
state or start and stop events.

Each row must contain the following columns:

* **\_stop**: Right time boundary timestamp (typically assigned by `range()` or `window()`).
* **\_time**: Timestamp of the production event.
* **state**: String that represents start or stop events or the production state.
  Use [`runningState`](#runningstate) to specify which value in the `state`column represents a running state.

### partEvents

(Required)
Part events that contains the running totals of parts produced and
parts that do not meet quality standards.

Each row must contain the following columns:

* **\_stop**: Right time boundary timestamp (typically assigned by`range()` or `window()`).
* **\_time**: Timestamp of the parts event.
* **partCount:** Cumulative total of parts produced.
* **badCount** Cumulative total of parts that do not meet quality standards.

### runningState

(Required)
State value that represents a running state.

### plannedTime

(Required)
Total time that equipment is expected to produce parts.

### idealCycleTime

(Required)
Ideal minimum time to produce one part.
