timescaledb

package
v0.0.0-...-37fced7 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 21, 2023 License: MIT Imports: 7 Imported by: 5

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type BaseGenerator

type BaseGenerator struct {
	UseJSON       bool
	UseTags       bool
	UseTimeBucket bool
}

BaseGenerator contains settings specific for TimescaleDB

func (*BaseGenerator) GenerateEmptyQuery

func (g *BaseGenerator) GenerateEmptyQuery() query.Query

GenerateEmptyQuery returns an empty query.TimescaleDB.

func (*BaseGenerator) NewDevops

func (g *BaseGenerator) NewDevops(start, end time.Time, scale int) (utils.QueryGenerator, error)

NewDevops creates a new devops use case query generator.

func (*BaseGenerator) NewIoT

func (g *BaseGenerator) NewIoT(start, end time.Time, scale int) (utils.QueryGenerator, error)

NewIoT creates a new iot use case query generator.

type Devops

type Devops struct {
	*BaseGenerator
	*devops.Core
}

Devops produces TimescaleDB-specific queries for all the devops query types.

func (*Devops) GroupByOrderByLimit

func (d *Devops) GroupByOrderByLimit(qi query.Query)

GroupByOrderByLimit populates a query.Query that has a time WHERE clause, that groups by a truncated date, orders by that date, and takes a limit: SELECT time_bucket('1 minute', time) AS t, MAX(cpu) FROM cpu WHERE time < '$TIME' GROUP BY t ORDER BY t DESC LIMIT $LIMIT

func (*Devops) GroupByTime

func (d *Devops) GroupByTime(qi query.Query, nHosts, numMetrics int, timeRange time.Duration)

GroupByTime selects the MAX for numMetrics metrics under 'cpu', per minute for nhosts hosts, e.g. in pseudo-SQL:

SELECT minute, max(metric1), ..., max(metricN) FROM cpu WHERE hostname IN ('$HOSTNAME_1',...,'$HOSTNAME_N') AND time >= '$HOUR_START' AND time < '$HOUR_END' GROUP BY minute ORDER BY minute ASC

func (*Devops) GroupByTimeAndPrimaryTag

func (d *Devops) GroupByTimeAndPrimaryTag(qi query.Query, numMetrics int)

GroupByTimeAndPrimaryTag selects the AVG of numMetrics metrics under 'cpu' per device per hour for a day, e.g. in pseudo-SQL:

SELECT AVG(metric1), ..., AVG(metricN) FROM cpu WHERE time >= '$HOUR_START' AND time < '$HOUR_END' GROUP BY hour, hostname ORDER BY hour

func (*Devops) HighCPUForHosts

func (d *Devops) HighCPUForHosts(qi query.Query, nHosts int)

HighCPUForHosts populates a query that gets CPU metrics when the CPU has high usage between a time period for a number of hosts (if 0, it will search all hosts), e.g. in pseudo-SQL:

SELECT * FROM cpu WHERE usage_user > 90.0 AND time >= '$TIME_START' AND time < '$TIME_END' AND (hostname = '$HOST' OR hostname = '$HOST2'...)

func (*Devops) LastPointPerHost

func (d *Devops) LastPointPerHost(qi query.Query)

LastPointPerHost finds the last row for every host in the dataset

func (*Devops) MaxAllCPU

func (d *Devops) MaxAllCPU(qi query.Query, nHosts int, duration time.Duration)

MaxAllCPU selects the MAX of all metrics under 'cpu' per hour for nhosts hosts, e.g. in pseudo-SQL:

SELECT MAX(metric1), ..., MAX(metricN) FROM cpu WHERE hostname IN ('$HOSTNAME_1',...,'$HOSTNAME_N') AND time >= '$HOUR_START' AND time < '$HOUR_END' GROUP BY hour ORDER BY hour

type IoT

type IoT struct {
	*iot.Core
	*BaseGenerator
}

IoT produces TimescaleDB-specific queries for all the iot query types.

func NewIoT

func NewIoT(start, end time.Time, scale int, g *BaseGenerator) *IoT

NewIoT makes an IoT object ready to generate Queries.

func (*IoT) AvgDailyDrivingDuration

func (i *IoT) AvgDailyDrivingDuration(qi query.Query)

AvgDailyDrivingDuration finds the average driving duration per driver.

func (*IoT) AvgDailyDrivingSession

func (i *IoT) AvgDailyDrivingSession(qi query.Query)

AvgDailyDrivingSession finds the average driving session without stopping per driver per day.

func (*IoT) AvgLoad

func (i *IoT) AvgLoad(qi query.Query)

AvgLoad finds the average load per truck model per fleet.

func (*IoT) AvgVsProjectedFuelConsumption

func (i *IoT) AvgVsProjectedFuelConsumption(qi query.Query)

AvgVsProjectedFuelConsumption calculates average and projected fuel consumption per fleet.

func (*IoT) DailyTruckActivity

func (i *IoT) DailyTruckActivity(qi query.Query)

DailyTruckActivity returns the number of hours trucks has been active (not out-of-commission) per day per fleet per model.

func (*IoT) LastLocByTruck

func (i *IoT) LastLocByTruck(qi query.Query, nTrucks int)

LastLocByTruck finds the truck location for nTrucks.

func (*IoT) LastLocPerTruck

func (i *IoT) LastLocPerTruck(qi query.Query)

LastLocPerTruck finds all the truck locations along with truck and driver names.

func (*IoT) StationaryTrucks

func (i *IoT) StationaryTrucks(qi query.Query)

StationaryTrucks finds all trucks that have low average velocity in a time window.

func (*IoT) TruckBreakdownFrequency

func (i *IoT) TruckBreakdownFrequency(qi query.Query)

TruckBreakdownFrequency calculates the amount of times a truck model broke down in the last period.

func (*IoT) TrucksWithHighLoad

func (i *IoT) TrucksWithHighLoad(qi query.Query)

TrucksWithHighLoad finds all trucks that have load over 90%.

func (*IoT) TrucksWithLongDailySessions

func (i *IoT) TrucksWithLongDailySessions(qi query.Query)

TrucksWithLongDailySessions finds all trucks that have driven more than 10 hours in the last 24 hours.

func (*IoT) TrucksWithLongDrivingSessions

func (i *IoT) TrucksWithLongDrivingSessions(qi query.Query)

TrucksWithLongDrivingSessions finds all trucks that have not stopped at least 20 mins in the last 4 hours.

func (*IoT) TrucksWithLowFuel

func (i *IoT) TrucksWithLowFuel(qi query.Query)

TrucksWithLowFuel finds all trucks with low fuel (less than 10%).

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL