# KPIs

The `kpis` field in a study specifies which metrics should be considered as KPI for an offline optimization study.

In case this selection is not specified, all metrics mentioned in the goal and constraint of the optimization study are considered.

A KPI is defined as follows:

| Field         | Type   | Value restriction                                   | Is required | Default value   | Description                               |
| ------------- | ------ | --------------------------------------------------- | ----------- | --------------- | ----------------------------------------- |
| `name`        | string | should match a component metric                     | no          | `<metric_name>` | Label that will be used in the UI         |
| `formula`     | string | Must be defined as `<component_name>.<metric_name>` | yes         |                 | The metric name associated to a component |
| `direction`   | string | `minimize`, `maximize`                              | yes         |                 | The direction corresponding to the metric |
| `aggregation` | string | `avg`, `min`, `max`, `sum`, `p90`, `p95`, `p99`     | no          | `avg`           | A valid metric aggregation                |

Notice that the textual badge displayed in the Akamas UI use "Best name".

### Example

The following fragment is an example of a list of KPIs:

```yaml
kpis:
  - name: "Response time"
    formula: renaissance.response_time
    direction: minimize
  - name: "CPU used"
    formula: renaissance.cpu_used
    direction: minimize
  - name: "Memory used"
    formula: renaissance.mem_used
    direction: minimize
```
