# Aggregate functions

Aggregate functions are time-dependent and are computed over a time interval. Aggregate functions include the
`rate`

function and functions with names that include the keyword
`OverTime`

. Aggregate functions must specify a time interval.

Transition and ratio calculations are not considered aggregate functions.

If the monitored URI includes parameters and the monitor is an aggregate function, the parameter must be passed to the aggregate function instead of to the
`Monitor`

function.

For example:

```
uri2 = '/rest/v1/system/interfaces/{}?attributes=statistics.rx_packets'
avg_m = AverageOverTime(uri2, "1 hour", [self.params['interface_id']])
self.m2 = Monitor(avg_m, 'Rx Packets')
```

In the examples of the functions,
`uri2`

is the following:

`uri2 = '/rest/v1/system?attributes=resource_utilization_poll_interval'`

The aggregate functions are the following:

`CountOverTime`

Counts the number of distinct time-series data points that have been generated during the specified period of time.

Example

`CountOverTime`

:`count_over_m = CountOverTime(uri2, "5 minutes") self.m2 = Monitor( count_over_m, name='Resource Utilization Poll Interval')`

`SumOverTime`

Calculates the sum of the monitored resource values that occurred during the specified period of time. When the monitored URI contains wildcard characters, this function sums over the current values of all resources pointed to by expanding the wildcards.

Example

`SumOverTime`

:`sum_over_m = SumOverTime(uri2, "5 minutes") self.m10 = Monitor( sum_over_m, name='Resource Utilization Poll Interval')`

`MinOverTime`

Calculates the minimum of the monitored resource values. When the monitored URI contains wildcard characters, this function returns the minimum value over the current values of all resources pointed to by expanding the wildcards.

Example

`MinOverTime`

:`min_over_m = MinOverTime(uri2, "5 minutes") self.m2 = Monitor( min_over_m, name='Resource Utilization Poll Interval')`

`MaxOverTime`

Calculates the maximum of the monitored resource values. When the monitored URI contains wildcard characters, this function returns the maximum value over the current values of all resources pointed to by expanding the wildcards.

Example:

`MaxOverTime`

:`max_over_m = MaxOverTime(uri2, "5 minutes") self.m16 = Monitor( max_over_m, name='Resource Utilization Poll Interval')`

`AverageOverTime`

Calculates the average of the monitored resource values over the specified period of time. When the monitored URI contains wildcard characters, this function calculates and returns the average value over the current values of all resources pointed to by expanding the wildcards.

Example

`AverageOverTime`

:`avg_over_m = AverageOverTime(uri2, "5 minutes") self.m18 = Monitor( avg_over_m, name='Resource Utilization Poll Interval')`

`Rate`

Calculates the per-second average rate of increase for the monitored resource value over the specified period of time. When the monitored URI contains wildcard characters, this function calculates the per-second average rate of increase for each of the monitored resources pointed to by expanding the wildcards.

Example:

`rate_m = Rate(uri2, "5 minutes") self.m8 = Monitor(rate_m, name='Resource Utilization Poll Interval')`

## Time interval

The format of the time interval is the following:

`"``<number>` `<unit>`"

The value for

is one of the following:
`<unit>`

`second`

`seconds`

`minute`

`minutes`

`day`

`days`

`hour`

`hours`

For example:
`"12 seconds"`