to() function

to() writes data to an InfluxDB Cloud or v2.x bucket and outputs the written data.

    bucket: "my-bucket",
    org: "my-org",
    host: "http://localhost:8086",
    token: "mY5uP3rS3cRe7t0k3n",
    timeColumn: "_time",
    tagColumns: ["tag1", "tag2", "tag3"],
    fieldFn: (r) => ({ r._field: r._value }),

// OR

    bucketID: "1234567890",
    orgID: "0987654321",
    host: "http://localhost:8086",
    token: "mY5uP3rS3cRe7t0k3n",
    timeColumn: "_time",
    tagColumns: ["tag1", "tag2", "tag3"],
    fieldFn: (r) => ({ r._field: r._value }),

to() does not require a package import

to() is part of the influxdata/influxdb package, but is included with the universe package by default and does not require an import statement or package namespace.

Output data requirements

to() writes data structured using the standard InfluxDB v2.x and InfluxDB Cloud data structure that includes, at a minimum, the following columns:

  • _time
  • _measurement
  • _field
  • _value

All other columns are written to InfluxDB as tags.

to() drops rows with a null _time value and does not write them to InfluxDB.


You must provide a bucket or bucketID and an org or orgID.


Bucket to write data to. bucket and bucketID are mutually exclusive.


Bucket ID to write data to. bucketID and bucket are mutually exclusive.


InfluxDB organization name. org and orgID are mutually exclusive.


InfluxDB organization ID. orgID and org are mutually exclusive.

to() cannot write to from one InfluxDB Cloud organization to another.


InfluxDB URL or InfluxDB Cloud region URL to write to.

host is required when writing to a remote InfluxDB instance. If specified, token is also required.


InfluxDB API token.

token is required when writing to another organization or when writing to a remote InfluxDB host.


Time column of the output. Default is "_time".


Tag columns in the output. Defaults to all columns with type string, excluding all value columns and columns identified by fieldFn.


Function that takes a record from the input table and returns a record. For each record from the input table, fieldFn returns a record that maps the output field key to the output value. Default is (r) => ({ [r._field]: r._value }) Output data type: Record

Make sure fieldFn parameter names match each specified parameter. To learn why, see Match parameter names.


Default to() operation

Given the following table:

_time _start _stop _measurement _field _value
0005 0000 0009 “a” “temp” 100.1
0006 0000 0009 “a” “temp” 99.3
0007 0000 0009 “a” “temp” 99.9

The default to() operation:

    |> to(bucket:"my-bucket", org:"my-org")

is equivalent to writing the above data using the following line protocol:

_measurement=a temp=100.1 0005
_measurement=a temp=99.3 0006
_measurement=a temp=99.9 0007

Custom to() operation

The default to() operation can be overridden. For example, given the following table:

_time _start _stop tag1 tag2 hum temp
0005 0000 0009 “a” “b” 55.3 100.1
0006 0000 0009 “a” “b” 55.4 99.3
0007 0000 0009 “a” “b” 55.5 99.9

The operation:

    |> to(
        fieldFn: (r) => ({"hum": r.hum, "temp": r.temp}),

is equivalent to writing the above data using the following line protocol:

_tag1=a hum=55.3,temp=100.1 0005
_tag1=a hum=55.4,temp=99.3 0006
_tag1=a hum=55.5,temp=99.9 0007

Write to multiple buckets

The example below does the following:

  1. Writes data to bucket1 and returns the data as it is written.
  2. Ungroups the returned data.
  3. Counts the number of rows.
  4. Maps columns required to write to InfluxDB.
  5. Writes the modified data to bucket2.
    |> to(bucket: "bucket1")
    |> group()
    |> count()
    |> map(fn: (r) => ({r with _time: now(), _measurement: "writeStats", _field: "numPointsWritten"}))
    |> to(bucket: "bucket2")

Was this page helpful?

Thank you for your feedback!

Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.