InfluxElixir.Write.Point (InfluxElixir v0.1.52)

Copy Markdown View Source

Point struct representing a single InfluxDB data point.

Contains measurement name, tags, fields, and optional timestamp.

Fields

  • :measurement - measurement name (required, string)
  • :tags - tag key-value pairs (optional, %{String.t() => String.t()})
  • :fields - field key-value pairs (required, at least one)
  • :timestamp - point timestamp (optional, server assigns if nil)

Summary

Functions

Creates a new Point struct.

Types

field_value()

@type field_value() :: integer() | float() | String.t() | boolean()

t()

@type t() :: %InfluxElixir.Write.Point{
  fields: %{required(String.t()) => field_value()},
  measurement: String.t(),
  tags: %{required(String.t()) => String.t()},
  timestamp: DateTime.t() | integer() | nil
}

Functions

new(measurement, fields, opts \\ [])

@spec new(String.t(), %{required(String.t()) => field_value()} | nil, keyword()) ::
  t()

Creates a new Point struct.

Parameters

  • measurement - measurement name (string)
  • fields - field key-value pairs (map); nil is no fields, %{}
  • opts - optional keyword list:
    • :tags - tag key-value pairs (default: %{}; nil is %{})
    • :timestamp - point timestamp (default: nil)

A point with no fields is built, and InfluxElixir.Write.LineProtocol.encode/2 refuses it with :empty_fields, as it refuses every point no server accepts.

Examples

iex> InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64})
%InfluxElixir.Write.Point{
  measurement: "cpu",
  fields: %{"value" => 0.64},
  tags: %{},
  timestamp: nil
}

iex> InfluxElixir.Write.Point.new("cpu", nil, tags: nil)
%InfluxElixir.Write.Point{measurement: "cpu", fields: %{}, tags: %{}, timestamp: nil}

iex> InfluxElixir.Write.Point.new("cpu", %{"value" => 0.64},
...>   tags: %{"host" => "server01"},
...>   timestamp: 1_630_424_257_000_000_000
...> )
%InfluxElixir.Write.Point{
  measurement: "cpu",
  fields: %{"value" => 0.64},
  tags: %{"host" => "server01"},
  timestamp: 1_630_424_257_000_000_000
}