Aggregation Functions
Statistical functions are applied to values in each period to calculate period statistics.
Client and Server Calculations
The Charts library provides a built-in capability to calculate some of the aggregate statistics in the user's browser (on the client).
In client-side mode, the browser downloads detailed samples once from the server and calculates statistics in JavaScript. The detailed samples remain in browser memory. When the user clicks one of the chart controls to modify the aggregation period or to view results a different statistic, the browser is able to recompute statistics locally, without requesting the data from the server.
In server-side mode, the client makes requests for aggregate statistics from the server each time the period or function is changed. The server has more compute and memory resources and is able to calculate statistics much faster then the client. The memory required from the browser is minimized since there is no need to download detailed data. However, if the network is slow, the benefits of server-side processing can be outweighed if the client downloads detailed data once and re-uses it for many subsequent re-calculations.
By default, the calculation is performed on the client, unless the requested statistical function is supported only on the server, such as wavg
or standard_deviation
.
To modify the default behavior, use the server-aggregate
setting.
server-aggregate = true
Server and Client Aggregators
Supported both in client- and server-mode. Calculated on client side by default or if server-aggregate
is set to false
.
Syntax | Description |
---|---|
count | Number of samples during the period. |
min | Minimum value during the period. |
max | Maximum value during the period. |
sum | Sum of values during the period. |
avg | Average value during the period. |
percentile(n) | n -th percentile, for example PERCENTILE(75) or PERCENTILE(99.5) .n is a decimal number between [0, 100] . |
median | Median value, same as 50% percentile. |
first | First value received during the period. |
last | Last value received during the period. |
delta | Delta is the difference between the last value in the period and the last value in the previous period. If no last value is present in the previous period (empty period), then delta is the difference between the last and first values during the current period.See also counter aggregator. |
counter | Sum of the differences between consecutive values in the period. If the difference between any two values is negative, the difference is replaced with the value itself. If the difference between values is always non-negative, the counter aggregator returns the same value as the delta aggregator.Refer to this Example to better understand the difference between COUNTER and DELTA . |
Server Aggregators
Not supported in client-mode. Calculated on the server side, regardless of the server-aggregate
setting.
Syntax | Description |
---|---|
standard_deviation | Standard deviation of values during the period. √ of the variance. |
median_abs_dev | Median absolute deviation of values during the period.median(abs(value - median(value))) . |
wtavg | An average created via the multiplication of each component by a factor reflecting importance. Weight is assigned based on timestamps rather than index. Data points with older timestamps contribute less to the weighted mean than more recent data. The weight of a sample is proportional to the current_time – first_time + 1 (in seconds), where current_time is the timestamp of the sample, and first_time is the timestamp of the first sample received during the period.Weights are normalized, their sum is equal to 1 .Refer to the calculation example below. |
wavg | A weighted average of samples received during the period. The weight of a sample is proportional to the index of the sample in the time-ordered array of all samples during the period. Weights are normalized, their sum is equal to 1 .A weighted average is sum of sample values multiplied by weight. Refer to the Calculation Example below. |
min_value_time | Time when the minimum value (min ) occurred for the first time during the period. |
max_value_time | Time when the maximum value (max ) occurred for the first time during the period. |
threshold_count | Number of threshold violations during the period. A violation is a sequence of one or more successive data points exceeding the specified threshold. Example: The following values are collected every 5 minutes.1, 2, 5, 7, 1, 1 . If the threshold is set to 4 , then one sequence (5 ,7 ) exceeds the threshold. |
threshold_duration | Total duration of threshold violations during the period in milliseconds. A violation is a sequence of one or more successive data points exceeding the specified threshold. Example: The following values are collected every 5 minutes.1, 2, 5, 7, 1, 1 .If the threshold is set to 4 , then one sequence (5 ,7 ) exceeds the threshold and its total duration based on linear interpolation is 550 seconds.If the threshold is 5 , then duration is 850 seconds.For periods at the beginning of the timespan, at the end of the timespan or after a missing period, the value at the beginning of the period is set to the first value, and the value at the end of the period is set to last value. |
threshold-percent | Percent of time during which the value remained below threshold (no violation). Formula: threshold_percent = 100 - threshold_duration / period_duration * 100 |
Interpolation Functions
If the period does not contain any detailed values, they are excluded from the results. The default behavior NONE
can be modified by specifying an interpolation function to fill missing periods.
Function | Description |
---|---|
NONE | No interpolation. Periods without any raw values are excluded from results. |
LINEAR | Calculate period value using linear interpolation between previous and next period values. |
PREVIOUS | Set value for the period based on the previous period’s value. |
NEXT | Set value for the period based on the next period’s value. |
VALUE | Set value for the period to a specific number. |
Examples
AVG
, WAVG
, and WTAVG
Example
See the Excel spreadsheet for testing and calculation.
wtavg()
: Weighted time average.
Calculation: Weight = (sample.time - first.time)/(last.time - first.time + 1)
Examples
Box Chart with percentile
Histogram with percentile
Time Chart with delta
Time Chart with count
and delta