InfluxElixir.Query.SQL (InfluxElixir v0.1.13)

Copy Markdown View Source

v3 SQL query builder and executor.

Supports parameterized queries with $param placeholders and multiple response formats (JSON, JSONL, CSV, Parquet).

Parameterized Queries

Always use $param placeholders to prevent injection:

InfluxElixir.Query.SQL.query(conn,
  "SELECT * FROM prices WHERE symbol = $symbol",
  params: %{symbol: "BTC-USD"}
)

Response Formats

Supported via the :format option:

  • :json — default, returns parsed list of maps
  • :jsonl — newline-delimited JSON
  • :csv — comma-separated values
  • :parquet — Apache Parquet binary

Transport

Use :transport option to select query transport:

  • :http — default, via Finch HTTP client
  • :flight — via Arrow Flight gRPC

Summary

Functions

Executes a non-SELECT SQL statement (DELETE, INSERT INTO ... SELECT).

Executes a SQL query and returns parsed results.

Executes a SQL query and returns a lazy Stream.

Types

format()

@type format() :: :json | :jsonl | :csv | :parquet

transport()

@type transport() :: :http | :flight

Functions

execute(connection, sql, opts \\ [])

@spec execute(
  InfluxElixir.Client.connection(),
  binary(),
  keyword()
) :: {:ok, map()} | {:error, term()}

Executes a non-SELECT SQL statement (DELETE, INSERT INTO ... SELECT).

Options

  • :params - parameter map for $param substitution
  • :database - override the default database

query(connection, sql, opts \\ [])

Executes a SQL query and returns parsed results.

Options

  • :params - parameter map for $param substitution
  • :database - override the default database
  • :format - response format (default: :json)
  • :transport - query transport (default: :http)

query_stream(connection, sql, opts \\ [])

@spec query_stream(
  InfluxElixir.Client.connection(),
  binary(),
  keyword()
) :: Enumerable.t()

Executes a SQL query and returns a lazy Stream.

For large result sets to avoid loading all rows into memory.

Options

Same as query/3.