map() function
The map()
function applies a function to each record in the input tables.
The modified records are assigned to new tables based on the group key of the input table.
The output tables are the result of applying the map function to each record of the input tables.
When the output record contains a different value for the group key, the record is regrouped into the appropriate table. When the output record drops a column that was part of the group key, that column is removed from the group key.
Function type: Transformation
map(fn: (r) => ({ _value: r._value * r._value }))
Parameters
Make sure fn
parameter names match each specified parameter. To learn why, see Match parameter names.
fn
A single argument function to apply to each record. The return value must be a record.
Data type: Function
Records evaluated in fn
functions are represented by r
, short for “record” or “row”.
Important notes
Preserve columns
By default, map()
drops any columns that:
- Are not part of the input table’s group key.
- Are not explicitly mapped in the
map()
function.
This often results in the _time
column being dropped.
To preserve the _time
column and other columns that do not meet the criteria above,
use the with
operator to map values in the r
record.
The with
operator updates a column if it already exists,
creates a new column if it doesn’t exist, and includes all existing columns in
the output table.
map(fn: (r) => ({ r with newColumn: r._value * 2 }))
Examples
Square the value of each record
from(bucket:"example-bucket")
|> filter(fn: (r) =>
r._measurement == "cpu" and
r._field == "usage_system" and
r.cpu == "cpu-total"
)
|> range(start:-12h)
|> map(fn: (r) => ({ r with _value: r._value * r._value}))
Create a new table with new format
from(bucket:"example-bucket")
|> filter(fn: (r) =>
r._measurement == "cpu" and
r._field == "usage_system"
)
|> range(start:-12h)
// create a new table by copying each row into a new format
|> map(fn: (r) => ({
time: r._time,
app_server: r.host
}))
Add new columns and preserve existing columns
from(bucket:"example-bucket")
|> filter(fn: (r) =>
r._measurement == "cpu" and
r._field == "usage_system"
)
|> range(start:-12h)
// create a new table by copying each row into a new format
|> map(fn: (r) => ({
r with
app_server: r.host,
valueInt: int(v: r._value)
}))
Troubleshooting
Map object property is not supported in a Flux table
Flux tables only support the following value types:
- float
- integer
- unsigned integer
- string
- boolean
- time
If map()
returns a record with an unsupported type, Flux returns an error with
the name of the column that attempted to use the unsupported type.
If mapping a duration value, use time()
to convert it to a time value or int()
to convert it to an integer.
For the bytes type, use string()
to convert the value to a string.
For information about supporting other data types in Flux tables, see the following Github issues:
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.