timeseries

package
v1.7.2 Latest Latest
Warning

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

Go to latest
Published: Jun 16, 2021 License: MIT Imports: 13 Imported by: 1

README

Time Series

The timeseries package is used to hold time series data, often for creating time-based bar or line charts. Each time value can be stored as a float or an integer. Data for multiple series are stored by TimeSeriesSet.

Major structs

  • TimeSeries: a single time series
  • TimeSeriesSet: mulitple time series sets

Documentation

Overview

timeseries provides tools for adding and formatting static time series data for reporting purposes.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func MSS2MS

func MSS2MS(in map[string]map[string]int) map[string]int

func ReportAxisX

func ReportAxisX(tss TimeSeriesSet, cols int, conv func(time.Time) string) []string

ReportAxisX generates data for use with `C3Chart.C3Axis.C3AxisX.Categories`.

func TimeFormatNiceMonth

func TimeFormatNiceMonth(dt time.Time) string

func TimeFormatNiceQuarter

func TimeFormatNiceQuarter(dt time.Time) string

func TimeFormatRFC3339

func TimeFormatRFC3339(dt time.Time) string

func TimeSeriesMapMinMaxTimes

func TimeSeriesMapMinMaxTimes(dsm map[string]TimeSeries) (time.Time, time.Time, error)

func TimeSeriesMapMinMaxValues

func TimeSeriesMapMinMaxValues(tsm map[string]TimeSeries) (int64, int64, error)

func TimeSeriesSliceNames

func TimeSeriesSliceNames(dsSlice []TimeSeries) []string

func TimeSeriesSliceTable

func TimeSeriesSliceTable(dsSlice []TimeSeries) table.Table

func TimeSeriesSliceTimes

func TimeSeriesSliceTimes(dsSlice []TimeSeries) []string

func TimeSeriesSliceWriteXLSX

func TimeSeriesSliceWriteXLSX(filename string, dsSlice []TimeSeries) error

TimeSeries writes a slice of TimeSeries to an Excel XLSX file for easy consumption.

func TimeSeriesToTable

func TimeSeriesToTable(ds TimeSeries, col2 string, dtFmt func(dt time.Time) string) table.Table

TimeSeriesToTable generates a `table.Table` given a `TimeSeries`.

func TimeSeriesWriteXLSX

func TimeSeriesWriteXLSX(filename string, ds TimeSeries, col2 string, dtFmt func(dt time.Time) string) error

TimeSeriesWriteXLSX writes an XSLX file given a `TimeSeries`

Types

type RowFloat64

type RowFloat64 struct {
	Name   string
	Values []float64
}

func ReportFunnelPct

func ReportFunnelPct(rows []RowInt64) []RowFloat64

func ReportGrowthPct

func ReportGrowthPct(rows []RowInt64) []RowFloat64

func (*RowFloat64) Flatten

func (row *RowFloat64) Flatten(conv func(v float64) string, preCount int, preVal string) []string

type RowInt64

type RowInt64 struct {
	Name         string
	DisplayName  string
	HavePlusOne  bool
	ValuePlusOne int64
	Values       []int64
}

func Report

func Report(tss TimeSeriesSet, cols int, lowFirst bool) []RowInt64

Report generates data for use with `C3Chart.C3ChartData.Columns`.

func (*RowInt64) Flatten

func (row *RowInt64) Flatten(conv func(v int64) string) []string

type TableConfig

type TableConfig struct {
	CountColIdx         uint
	TimeColIdx          uint
	TimeFormat          string
	SeriesSetNameColIdx int // optional. Set < 0 to discard.
	SeriesNameColIdx    int
	Interval            timeutil.Interval
}

func (*TableConfig) GetTimeFormat

func (cfg *TableConfig) GetTimeFormat() string

type TimeItem

type TimeItem struct {
	SeriesName    string
	SeriesSetName string
	Time          time.Time
	IsFloat       bool
	Value         int64
	ValueFloat    float64
}

func ParseRecordsTimeItems added in v1.7.1

func ParseRecordsTimeItems(records [][]string, cfg TableConfig) ([]TimeItem, error)

func (*TimeItem) ValueFloat64

func (item *TimeItem) ValueFloat64() float64

func (*TimeItem) ValueInt64

func (item *TimeItem) ValueInt64() int64

type TimeSeries

type TimeSeries struct {
	SeriesName string
	ItemMap    map[string]TimeItem
	IsFloat    bool
	Interval   timeutil.Interval // Informational
}

func AggregateSeries

func AggregateSeries(series TimeSeries) TimeSeries

func NewTimeSeries

func NewTimeSeries() TimeSeries

func TimeSeriesDivide

func TimeSeriesDivide(numer, denom TimeSeries) (TimeSeries, error)

func (*TimeSeries) AddItem

func (ts *TimeSeries) AddItem(item TimeItem)

AddItem adds data item. It will sum values when existing time unit is encountered.

func (*TimeSeries) DeleteByTime

func (ts *TimeSeries) DeleteByTime(dt time.Time)

func (*TimeSeries) ItemTimes

func (ts *TimeSeries) ItemTimes() []time.Time

func (*TimeSeries) ItemsSorted

func (ts *TimeSeries) ItemsSorted() []TimeItem

ItemsSorted returns sorted TimeItems. This currently uses a simple string sort on RFC3339 times.

func (*TimeSeries) Keys

func (ts *TimeSeries) Keys() []string

Keys returns a sorted listed of Item keys.

func (*TimeSeries) Last

func (ts *TimeSeries) Last() (TimeItem, error)

func (*TimeSeries) LastItem

func (ts *TimeSeries) LastItem(skipIfTimePartialValueLessPrev bool) (TimeItem, error)

func (*TimeSeries) MaxValue

func (ts *TimeSeries) MaxValue() int64

func (*TimeSeries) MinMaxTimes

func (ts *TimeSeries) MinMaxTimes() (time.Time, time.Time)

func (*TimeSeries) MinMaxValues

func (ts *TimeSeries) MinMaxValues() (int64, int64)

func (*TimeSeries) MinMaxValuesFloat64

func (ts *TimeSeries) MinMaxValuesFloat64() (float64, float64)

func (*TimeSeries) MinValue

func (ts *TimeSeries) MinValue() int64

func (*TimeSeries) OneItemMaxValue

func (ts *TimeSeries) OneItemMaxValue() (TimeItem, error)

func (*TimeSeries) Pop

func (ts *TimeSeries) Pop() (TimeItem, error)

Pop removes the item with the chronologically last time. This is useful when generating interval charts and the last period has not concluded, thus providing an inaccurate projection when compared to previous full months of data.

func (*TimeSeries) SetSeriesName

func (ts *TimeSeries) SetSeriesName(seriesName string)

func (*TimeSeries) Stats

func (ts *TimeSeries) Stats() point.PointSet

func (*TimeSeries) TimeSeries

func (ts *TimeSeries) TimeSeries(interval timeutil.Interval) []time.Time

func (*TimeSeries) TimeSlice

func (ts *TimeSeries) TimeSlice(sortSlice bool) timeutil.TimeSlice

func (*TimeSeries) ToMonth

func (ts *TimeSeries) ToMonth(inflate bool) TimeSeries

func (*TimeSeries) ToMonthCumulative

func (ts *TimeSeries) ToMonthCumulative(inflate bool, timesInput ...time.Time) (TimeSeries, error)

func (*TimeSeries) ToQuarter

func (ts *TimeSeries) ToQuarter() TimeSeries

func (*TimeSeries) WriteXLSX

func (ts *TimeSeries) WriteXLSX(filename, sheetname, col1, col2 string) error

type TimeSeriesFunnel

type TimeSeriesFunnel struct {
	Series map[string]TimeSeriesSimple
	Order  []string
}

func (*TimeSeriesFunnel) TimeSeriesSetByQuarter

func (tsf *TimeSeriesFunnel) TimeSeriesSetByQuarter() (TimeSeriesSet, error)

func (*TimeSeriesFunnel) Times

func (tsf *TimeSeriesFunnel) Times() []time.Time

func (*TimeSeriesFunnel) TimesSorted

func (tsf *TimeSeriesFunnel) TimesSorted() []time.Time

type TimeSeriesSet

type TimeSeriesSet struct {
	Name     string
	Series   map[string]TimeSeries
	Times    []time.Time
	Order    []string
	IsFloat  bool
	Interval timeutil.Interval
}

func NewTimeSeriesSet

func NewTimeSeriesSet(name string) TimeSeriesSet

func (*TimeSeriesSet) AddItem

func (set *TimeSeriesSet) AddItem(item TimeItem)

func (*TimeSeriesSet) AddItems

func (set *TimeSeriesSet) AddItems(items ...TimeItem)

func (*TimeSeriesSet) AddSeries added in v1.7.1

func (set *TimeSeriesSet) AddSeries(timeSeries ...TimeSeries) error

func (*TimeSeriesSet) DeleteItemByTime

func (set *TimeSeriesSet) DeleteItemByTime(dt time.Time)

func (*TimeSeriesSet) GetSeriesByIndex

func (set *TimeSeriesSet) GetSeriesByIndex(index int) (TimeSeries, error)

func (*TimeSeriesSet) Inflate

func (set *TimeSeriesSet) Inflate()

func (*TimeSeriesSet) Item

func (set *TimeSeriesSet) Item(seriesName, rfc3339 string) (TimeItem, error)

func (*TimeSeriesSet) MinMaxTimes

func (set *TimeSeriesSet) MinMaxTimes() (time.Time, time.Time)

func (*TimeSeriesSet) MinMaxValues

func (set *TimeSeriesSet) MinMaxValues() (int64, int64)

func (*TimeSeriesSet) MinMaxValuesFloat64

func (set *TimeSeriesSet) MinMaxValuesFloat64() (float64, float64)

func (*TimeSeriesSet) PopLast

func (set *TimeSeriesSet) PopLast()

func (*TimeSeriesSet) SeriesNames

func (set *TimeSeriesSet) SeriesNames() []string

func (*TimeSeriesSet) TimeSlice

func (set *TimeSeriesSet) TimeSlice(sortAsc bool) sortutil.TimeSlice

func (*TimeSeriesSet) TimeStrings

func (set *TimeSeriesSet) TimeStrings() []string

func (*TimeSeriesSet) ToMonth

func (set *TimeSeriesSet) ToMonth(inflate bool) TimeSeriesSet

func (*TimeSeriesSet) ToMonthCumulative

func (set *TimeSeriesSet) ToMonthCumulative(popLast, inflate bool) (TimeSeriesSet, error)

func (*TimeSeriesSet) ToNewSeriesNames

func (set *TimeSeriesSet) ToNewSeriesNames(seriesNames, seriesSetNames map[string]string) TimeSeriesSet

func (*TimeSeriesSet) ToTable

func (set *TimeSeriesSet) ToTable(opts *TssTableOpts) (table.Table, error)

ToTable returns a `table.TableData`.

func (*TimeSeriesSet) WriteXLSX

func (set *TimeSeriesSet) WriteXLSX(filename string, opts *TssTableOpts) error

type TimeSeriesSet2

type TimeSeriesSet2 struct {
	Name     string
	SetsMap  map[string]TimeSeriesSet
	Interval timeutil.Interval
}

func NewTimeSeriesSet2

func NewTimeSeriesSet2(name string) TimeSeriesSet2

func (*TimeSeriesSet2) AddItem

func (tss2 *TimeSeriesSet2) AddItem(item TimeItem)

func (*TimeSeriesSet2) AddItems

func (tss2 *TimeSeriesSet2) AddItems(items ...TimeItem)

func (*TimeSeriesSet2) SetNamesSorted

func (tss2 *TimeSeriesSet2) SetNamesSorted() []string

type TimeSeriesSimple

type TimeSeriesSimple struct {
	Name        string
	DisplayName string
	Times       []time.Time
}

func NewTimeSeriesSimple

func NewTimeSeriesSimple(name, displayName string) TimeSeriesSimple

func (*TimeSeriesSimple) ToTimeSeriesQuarter

func (tss *TimeSeriesSimple) ToTimeSeriesQuarter() TimeSeries

type TimeStats

type TimeStats struct {
	Items []TimeItem
}

TimeStats is used to generate unique counts stats for an array of with time ane names.

func (*TimeStats) UniqueCountsByMonth

func (ts *TimeStats) UniqueCountsByMonth() map[string]int

func (*TimeStats) UniqueCountsByQuarter

func (ts *TimeStats) UniqueCountsByQuarter() map[string]int

type TssTableOpts

type TssTableOpts struct {
	TimeColumnTitle string
	FuncFormatTime  func(time.Time) string
	TotalInclude    bool
	TotalTitle      string
	PercentInclude  bool
	PercentSuffix   string
}

func (*TssTableOpts) PercentSuffixOrDefault

func (opts *TssTableOpts) PercentSuffixOrDefault() string

func (*TssTableOpts) TotalTitleOrDefault

func (opts *TssTableOpts) TotalTitleOrDefault() string

Directories

Path Synopsis
examples

Jump to

Keyboard shortcuts

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