avg (comp) ↗
Use the avg() function to calculate the average value of a numerical field within a group of rows. When used with the comp stage, it computes a single statistical average for the specified field across all records sharing matching values defined in a grouping clause.
Syntax
comp avg(<field>) [as <alias>] [by <field1>[,<field2>...]] [addrawdata = true|false [as <target field>]]
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
| field | integer, float | Yes | The numerical field for which to calculate the average. |
| alias | string | No | An optional name for the resulting average field. |
| field1, field2... | any | No | Optional fields used to group rows for independent average calculations. |
| addrawdata | boolean | No | If true, includes a column listing the raw events contributing to the aggregate. Defaults to false. |
| target field | string | No | An optional alias for the raw data column if addrawdata is true. |
Returns
The avg() function returns a single numerical value representing the average of the input field for the specified group.
Usage Notes
- The avg() function operates exclusively on numerical fields, including both integers and floating-point numbers.
- The comp stage must always precede the avg() function.
- When the comp stage is used, the system field _time is removed from the result set unless explicitly included in a by clause.
- Calculated columns created by the comp stage are typically appended as the last columns in the result set.
- If addrawdata is set to true, the query supports up to 50 defined fields and displays up to 100 raw events.
Examples
Example 1: Average a field across the entire dataset
Goal: Calculate the average value of the duration_seconds field for all records in the dataset without grouping.
XQL Code:
config timeframe = 1d | dataset = sample_xql_raw | comp avg(duration_seconds) as overall_avg_duration
Explanation: The avg() function computes the mean of all duration_seconds values present in the sample_xql_raw dataset and names the result overall_avg_duration.
Output:
| overall_avg_duration |
|---|
| 10.285 |
Example 2: Average a field grouped by another field
Goal: Calculate the average duration_seconds separately for successful and unsuccessful events.
XQL Code:
config timeframe = 1d | dataset = sample_xql_raw | comp avg(duration_seconds) as avg_duration_by_status by is_successful
Explanation: This code groups records by their is_successful status and then calculates the average duration_seconds for each distinct group.
Output:
| is_successful | avg_duration_by_status |
|---|---|
| true | 14.271428571428571 |
| false | 0.9833333333333333 |
Example 3: Average with raw data inclusion
Goal: Calculate average duration and include the JSON representation of raw events that contributed to each group.
XQL Code:
config timeframe = 1d | dataset = sample_xql_raw | fields is_successful, duration_seconds | comp avg(duration_seconds) by is_successful addrawdata = true as raw_events_for_avg
Explanation: This code calculates the average duration_seconds grouped by is_successful and uses the addrawdata = true option to generate a column containing the underlying raw data for each aggregate.
Output:
| is_successful | avg_duration_by_status | raw_events_for_avg |
|---|---|---|
| true | 14.271428571428571 | [{"is_successful": true, "duration_seconds": 1.5}, ...] |
| false | 0.9833333333333333 | [{"is_successful": false, "duration_seconds": 0.8}, ...] |