All Projects → benjamin658 → influx-query-builder

benjamin658 / influx-query-builder

Licence: MIT license
The super lightweight InfluxDB query builder implemented in Go

Programming Languages

go
31211 projects - #10 most used programming language

Projects that are alternatives of or similar to influx-query-builder

influxdb-cxx
Fork of the unmaintained https://github.com/awegrzyn/influxdb-cxx project.
Stars: ✭ 47 (+193.75%)
Mutual labels:  influxdb, influxdb-client
influxdb-php-sdk
InfluxDB PHP SDK - UDP/IP or HTTP adapters for read and write data
Stars: ✭ 88 (+450%)
Mutual labels:  influxdb, query-builder
telemetry collector
build telemetry software stack for Cisco nx-os, support both telemetry dial-out and gNMI dial-in
Stars: ✭ 39 (+143.75%)
Mutual labels:  influxdb
telegraf-influxdb-grafana
TIG Stack
Stars: ✭ 30 (+87.5%)
Mutual labels:  influxdb
monitor system docs
No description or website provided.
Stars: ✭ 30 (+87.5%)
Mutual labels:  influxdb
influxdb-cxx
C++ client library for InfluxDB 1.x/2.x
Stars: ✭ 69 (+331.25%)
Mutual labels:  influxdb
bounded-disturbances
A k6/.NET red/green load testing workshop
Stars: ✭ 39 (+143.75%)
Mutual labels:  influxdb
monitoring-rancher
🤠How to Set up Rancher Server Monitoring with TIG Stack?
Stars: ✭ 22 (+37.5%)
Mutual labels:  influxdb
nfCollector
Collects Netflow version 1, 5, 6, 7, 9 & IPFIX & stores them on InfluxData time-series DB (InfluxDB)
Stars: ✭ 30 (+87.5%)
Mutual labels:  influxdb
json-sql-builder2
Level Up Your SQL-Queries
Stars: ✭ 59 (+268.75%)
Mutual labels:  query-builder
tmeta
Minimalistic Idiomatic Database "ORM" functionality for Go
Stars: ✭ 46 (+187.5%)
Mutual labels:  query-builder
dapper-repositories
CRUD for Dapper
Stars: ✭ 523 (+3168.75%)
Mutual labels:  query-builder
influxdb-ha
High-availability and horizontal scalability for InfluxDB
Stars: ✭ 45 (+181.25%)
Mutual labels:  influxdb
uber-cli
Beeps when surge is gone
Stars: ✭ 29 (+81.25%)
Mutual labels:  influxdb
darksky-influxdb
Logs weather information from darksky.io to InfluxDB
Stars: ✭ 22 (+37.5%)
Mutual labels:  influxdb
grafana-dashboards
List of Grafana Dashboards 📺
Stars: ✭ 120 (+650%)
Mutual labels:  influxdb
dropwizard-influxdb-reporter
Dropwizard Integrations for InfluxDB.
Stars: ✭ 16 (+0%)
Mutual labels:  influxdb
laravel-filter
Configurable and modular approach to query Filters for Laravel
Stars: ✭ 85 (+431.25%)
Mutual labels:  query-builder
vaultaire
Query DSL and data access utilities for Corda developers.
Stars: ✭ 14 (-12.5%)
Mutual labels:  query-builder
mongofluxd
Real time sync from MongoDB into InfluxDB
Stars: ✭ 33 (+106.25%)
Mutual labels:  influxdb

Influx Query Builder

Build Status Coverage Status Codacy Badge Go Report Card

The super lightweight InfluxDB query builder implemented in Go.

Installation

go get -u github.com/benjamin658/influx-query-builder

Query Builder Usage

Simple query

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement"

Select AS

builder := New()
query := builder.
  Select("temperature AS temp", "humidity AS hum").
  From("measurement).
  Build()

Output:

SELECT "temperature" AS "temp","humidity" AS "hum" FROM "measurement"

Function query

builder := New()
query := builder.
  Select(`MEAN("temperature")`, `SUM("humidity")`).
  From("measurement").
  Build()

Output:

SELECT MEAN("temperature"),SUM("humidity") FROM "measurement"

Function AS

builder := New()
query := builder.
  Select(`MEAN("temperature") AS mt`, `SUM("humidity") AS sh`).
  From("measurement").
  Build()

Output:

SELECT MEAN("temperature") AS "mt",SUM("humidity") AS "sh" FROM "measurement"

Query with criteria

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  And("time", "<", "2018-11-02T09:35:25Z").
  Or("tag", "=", "t").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' AND "time" < '2018-11-02T09:35:25Z' OR "tag" = 't'

Brackets criteria

Noted: If you use Where with WhereBrackets, Where will override the WhereBrackets.

Where Brackets

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  WhereBrackets(
    // Passing a new builder as the param
    New().
      Where("time", ">", "2018-11-01T06:33:57.503Z").
      And("time", "<", "2018-11-02T09:35:25Z").
  ).
  Or("tag", "=", "t").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE ("time" > '2018-11-01T06:33:57.503Z' AND "time" < '2018-11-02T09:35:25Z') OR "tag" = 't'

And Brackets

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  AndBrackets(
    // Passing a new builder as the param
    New().
      Where("time", "<", "2018-11-02T09:35:25Z").
      Or("tag", "=", "t"),
  ).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' AND ("time" < '2018-11-02T09:35:25Z' OR "tag" = 't')

Or Brackets

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Where("time", ">", "2018-11-01T06:33:57.503Z").
  OrBrackets(
    // Passing a new builder as the param
    New().
      Where("time", "<", "2018-11-02T09:35:25Z").
      Or("tag", "=", "t"),
  ).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" WHERE "time" > '2018-11-01T06:33:57.503Z' OR ("time" < '2018-11-02T09:35:25Z' OR "tag" = 't')

Group By time duration

builder := New()
duration := NewDuration()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupByTime(duration.Minute(10)).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY time(10m)

Group By Tag

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupByTag("sensorId").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY sensorId

Order By time

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Desc().
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" ORDER BY time DESC

Limit and Offset

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Limit(10).
  Offset(5).
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" LIMIT 10 OFFSET 5

Reset builder and get a new one

builder := New()
// some code...
builder = builder.Clean()

Get current query struct

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  Limit(100).
  Offset(100).
  Asc().
  GetQueryStruct()

/*
type CurrentQuery struct {
  Measurement   string
  Where         Tag
  And           []Tag
  Or            []Tag
  WhereBrackets QueryBuilder
  AndBrackets   []QueryBuilder
  OrBrackets    []QueryBuilder
  Fields        []string
  GroupBy       string
  Limit         uint
  Offset        uint
  Order         string
  IsLimitSet    bool
  IsOffsetSet   bool
}
*/

Deprecated

Group By time

builder := New()
query := builder.
  Select("temperature", "humidity").
  From("measurement").
  GroupBy("10m").
  Build()

Output:

SELECT "temperature","humidity" FROM "measurement" GROUP BY time(10m)

License


© Ben Hu (benjamin658), 2018-NOW

Released under the MIT License

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].