percentile (Aggregate Function)
This functions returns the pth percentile value of a given argument.
Syntax
<DOUBLE> math:percentile(<INT|LONG|FLOAT|DOUBLE> arg, <DOUBLE> p)
Query Parameters
| Name | Description | Default Value | Possible Data Types | Optional | Dynamic |
|---|---|---|---|---|---|
| arg | The value of the parameter whose percentile should be found. | INT LONG FLOAT DOUBLE | No | Yes | |
| p | Estimate of the percentile to be found (pth percentile) where p is any number greater than 0 or lesser than or equal to 100. | DOUBLE | No | Yes |
Example 1
CREATE STREAM InValueStream (sensorId int, temperature double);
@info(name = 'calculatePercentile')
INSERT INTO OutMediationStream
SELECT math:percentile(temperature, 97.0) AS percentile
FROM InValueStream#window.timeBatch(60000); -- 1-minute window
The calculatePercentile query processes the input stream InValueStream, which contains the sensorId and temperature fields. Using a 1-minute time window (60000 milliseconds) with the #window.timeBatch(60000) expression, the query calculates the 97th percentile of the temperature values within this time window for the events in InValueStream.
The math:percentile(temperature, 97.0) function is used to compute the 97th percentile value of the temperature events. The calculated percentile value is aliased as percentile and is directed to the OutMediationStream.
In summary, the calculatePercentile query monitors the temperature events in the InValueStream and computes the 97th percentile of those events within a rolling 1-minute window. The result is then sent to the OutMediationStream for further processing or analysis.