Documentation

Write to InfluxDB

To write data to InfluxDB using Flux, use to() or experimental.to(). Provide the following parameters to both functions:

Write options

Write data to InfluxDB

Use to() to write data structured using the standard InfluxDB v2.x and InfluxDB Cloud data structure. Data must include, at a minimum, the following columns:

  • _time
  • _measurement
  • _field
  • _value

All other columns are written to InfluxDB as tags.

Given the following input stream of tables:

_time _measurement id loc _field _value
2021-01-01T00:00:00Z m 001 SF temp 72.1
2021-01-01T01:00:00Z m 001 SF temp 71.8
2021-01-01T02:00:00Z m 001 SF temp 71.2
_time _measurement id loc _field _value
2021-01-01T00:00:00Z m 001 SF hum 40.5
2021-01-01T01:00:00Z m 001 SF hum 50.1
2021-01-01T02:00:00Z m 001 SF hum 52.8

to() generates the following line protocol and writes it to InfluxDB:

m,id=001,loc=SF temp=72.1,hum=40.5 1609459200000000000
m,id=001,loc=SF temp=71.8,hum=50.1 1609462800000000000
m,id=001,loc=SF temp=71.2,hum=52.8 1609466400000000000

Example: Write data to a bucket

data
  |> to(
    bucket: "example-bucket"
  )
data
  |> to(
    bucket: "example-bucket",
    org: "example-org",
    token: "mY5uPeRs3Cre7tok3N"
  )
data
  |> to(
    bucket: "example-bucket",
    org: "example-org",
    token: "mY5uPeRs3Cre7tok3N",
    host: "https://myinfluxdbdomain.com/8086"
  )

Write pivoted data to InfluxDB

Use experimental.to() to write pivoted data to InfluxDB. Input data must have the following columns:

  • _time
  • _measurement

All columns in the group key other than _time and _measurement are written to InfluxDB as tags. Columns not in the group key are written to InfluxDB as fields.

_start and _stop columns are ignored.

To write pivoted data to InfluxDB:

  1. Import the experimental package.
  2. Use experimental.to() to write pivoted data to an InfluxDB bucket.
import "experimental"

data
  |> experimental.to(bucket: "example-bucket")

Given the following input stream of tables:

Group key = [_measurement, id, loc]

_time _measurement id loc min max mean
2021-01-01T00:00:00Z m 001 FR 2 6 4.0
2021-01-01T01:00:00Z m 001 FR 2 18 10.0
2021-01-01T02:00:00Z m 001 FR 1 13 7.0
_time _measurement id loc min max mean
2021-01-01T00:00:00Z m 001 BK 4 4 4.0
2021-01-01T01:00:00Z m 001 BK 3 5 4.0
2021-01-01T02:00:00Z m 001 BK 5 8 6.5

experimental.to() generates the following line protocol and writes it to InfluxDB:

m,id=001,loc=FR min=2i,max=6i,mean=4 1609459200000000000
m,id=001,loc=FR min=2i,max=18i,mean=10 1609462800000000000
m,id=001,loc=FR min=1i,max=13i,mean=7 1609466400000000000
m,id=001,loc=BK min=4i,max=4i,mean=4 1609459200000000000
m,id=001,loc=BK min=3i,max=5i,mean=4 1609462800000000000
m,id=001,loc=BK min=5i,max=3i,mean=6.5 1609466400000000000

Example: Write pivoted data to InfluxDB

import "experimental"

data
  |> experimental.to(
    bucket: "example-bucket"
  )
import "experimental"

data
  |> experimental.to(
    bucket: "example-bucket",
    org: "example-org",
    token: "mY5uPeRs3Cre7tok3N"
  )
import "experimental"

data
  |> experimental.to(
    bucket: "example-bucket",
    org: "example-org",
    token: "mY5uPeRs3Cre7tok3N",
    host: "https://myinfluxdbdomain.com/8086"
  )

Upgrade to InfluxDB Cloud or InfluxDB 2.0!

InfluxDB Cloud and InfluxDB OSS 2.0 ready for production.