aggregateWindow() function
The aggregateWindow()
function applies an aggregate or selector function
(any function with a column
parameter) to fixed windows of time.
Function type: Aggregate
aggregateWindow(
every: 1m,
fn: mean,
column: "_value",
timeSrc: "_stop",
timeDst: "_time",
createEmpty: true
)
As data is windowed into separate tables and processed, the _time
column is dropped from each group key.
This function copies the timestamp from a remaining column into the _time
column.
View the function definition.
aggregateWindow()
restores the original _start
and _stop
values of input data
and, by default, uses _stop
to set the _time
value for each aggregated window.
Each row in the output of aggregateWindow
represents an aggregated window ending at _time
.
Parameters
Make sure fn
parameter names match each specified parameter. To learn why, see Match parameter names.
every
The duration of windows.
Calendar months and years
every
supports all valid duration units,
including calendar months (1mo
) and years (1y
).
Data type: Duration
fn
The aggregate function used in the operation.
Data type: Function
Only aggregate and selector functions with a column
parameter (singular) work with aggregateWindow()
.
column
The column on which to operate.
Defaults to "_value"
.
Data type: String
timeSrc
The time column from which time is copied for the aggregate record.
Defaults to "_stop"
.
Data type: String
timeDst
The “time destination” column to which time is copied for the aggregate record.
Defaults to "_time"
.
Data type: String
createEmpty
For windows without data, this will create an empty window and fill
it with a null
aggregate value.
Defaults to true
.
Data type: Boolean
Examples
The examples below use a data
variable to represent a filtered data set.
data = from(bucket: "example-bucket")
|> range(start: -1h)
|> filter(fn: (r) =>
r._measurement == "mem" and
r._field == "used_percent")
Use an aggregate function with default parameters
The following example uses the default parameters of the
mean()
function
to aggregate time-based windows:
data
|> aggregateWindow(
every: 5m,
fn: mean
)
Specify parameters of the aggregate function
To use functions that don’t provide defaults for required parameters with aggregateWindow()
,
define an anonymous function with column
and tables
parameters that pipes-forward
tables into the aggregate or selector function with all required parameters defined:
data
|> aggregateWindow(
column: "_value",
every: 5m,
fn: (column, tables=<-) => tables |> quantile(q: 0.99, column:column)
)
Window and aggregate by calendar month
data
|> aggregateWindow(every: 1mo, fn: mean)
Function definition
aggregateWindow = (every, fn, column="_value", timeSrc="_stop", timeDst="_time", tables=<-) =>
tables
|> window(every:every)
|> fn(column:column)
|> duplicate(column:timeSrc, as:timeDst)
|> window(every:inf, timeColumn:timeDst)
Support and feedback
Thank you for being part of our community! We welcome and encourage your feedback and bug reports for InfluxDB and this documentation. To find support, the following resources are available:
InfluxDB Cloud and InfluxDB Enterprise customers can contact InfluxData Support.