package ddsketch

import "github.com/DataDog/sketches-go/ddsketch"

Index

Types

type DDSketch

type DDSketch struct {
	mapping.IndexMapping
	// contains filtered or unexported fields
}

func DecodeDDSketch

func DecodeDDSketch(b []byte, storeProvider store.Provider) (*DDSketch, error)

DecodeDDSketch deserializes a sketch. Stores are built using storeProvider. The store type needs not match the store that the serialized sketch initially used. However, using the same store type may make decoding faster. In the absence of high performance requirements, store.BufferedPaginatedStoreConstructor is a sound enough choice of store provider. To avoid memory allocations, it is possible to use a store provider that reuses stores, by calling Clear() on previously used stores before providing the store. If the serialized content does not contain the index mapping, DecodeDDSketch returns an error.

func DecodeDDSketchWithIndexMapping

func DecodeDDSketchWithIndexMapping(b []byte, storeProvider store.Provider, indexMapping mapping.IndexMapping) (*DDSketch, error)

DecodeDDSketchWithIndexMapping deserializes a sketch. Stores are built using storeProvider. The store type needs not match the store that the serialized sketch initially used. However, using the same store type may make decoding faster. In the absence of high performance requirements, store.BufferedPaginatedStoreConstructor is a sound enough choice of store provider. To avoid memory allocations, it is possible to use a store provider that reuses stores, by calling Clear() on previously used stores before providing the store. If the serialized content contains an index mapping that differs from the provided one, DecodeDDSketchWithIndexMapping returns an error.

func FromProto

func FromProto(pb *sketchpb.DDSketch) (*DDSketch, error)

FromProto builds a new instance of DDSketch based on the provided protobuf representation, using a Dense store.

func FromProtoWithStoreProvider

func FromProtoWithStoreProvider(pb *sketchpb.DDSketch, storeProvider store.Provider) (*DDSketch, error)

func LogCollapsingHighestDenseDDSketch

func LogCollapsingHighestDenseDDSketch(relativeAccuracy float64, maxNumBins int) (*DDSketch, error)

Constructs an instance of DDSketch that offers constant-time insertion and whose size grows until the maximum number of bins is reached, at which point bins with highest indices are collapsed, which causes the relative accuracy guarantee to be lost on highest quantiles if values are all positive, or the lowest and highest quantiles if values include negative numbers.

func LogCollapsingLowestDenseDDSketch

func LogCollapsingLowestDenseDDSketch(relativeAccuracy float64, maxNumBins int) (*DDSketch, error)

Constructs an instance of DDSketch that offers constant-time insertion and whose size grows until the maximum number of bins is reached, at which point bins with lowest indices are collapsed, which causes the relative accuracy guarantee to be lost on lowest quantiles if values are all positive, or the mid-range quantiles for values closest to zero if values include negative numbers.

func LogUnboundedDenseDDSketch

func LogUnboundedDenseDDSketch(relativeAccuracy float64) (*DDSketch, error)

Constructs an instance of DDSketch that offers constant-time insertion and whose size grows indefinitely to accommodate for the range of input values.

func NewDDSketch

func NewDDSketch(indexMapping mapping.IndexMapping, positiveValueStore store.Store, negativeValueStore store.Store) *DDSketch

func NewDDSketchFromStoreProvider

func NewDDSketchFromStoreProvider(indexMapping mapping.IndexMapping, storeProvider store.Provider) *DDSketch

func NewDefaultDDSketch

func NewDefaultDDSketch(relativeAccuracy float64) (*DDSketch, error)

func (*DDSketch) Add

func (s *DDSketch) Add(value float64) error

Adds a value to the sketch.

func (*DDSketch) AddWithCount

func (s *DDSketch) AddWithCount(value, count float64) error

Adds a value to the sketch with a float64 count.

func (*DDSketch) ChangeMapping

func (s *DDSketch) ChangeMapping(newMapping mapping.IndexMapping, positiveStore store.Store, negativeStore store.Store, scaleFactor float64) *DDSketch

ChangeMapping changes the store to a new mapping. it doesn't change s but returns a newly created sketch. positiveStore and negativeStore must be different stores, and be empty when the function is called. It is not the conversion that minimizes the loss in relative accuracy, but it avoids artefacts like empty bins that make the histograms look bad. scaleFactor allows to scale out / in all values. (changing units for eg)

func (*DDSketch) Clear

func (s *DDSketch) Clear()

Clear empties the sketch while allowing reusing already allocated memory.

func (*DDSketch) Copy

func (s *DDSketch) Copy() *DDSketch

Return a (deep) copy of this sketch.

func (*DDSketch) DecodeAndMergeWith

func (s *DDSketch) DecodeAndMergeWith(bb []byte) error

DecodeAndMergeWith deserializes a sketch and merges its content in the receiver sketch. If the serialized content contains an index mapping that differs from the one of the receiver, DecodeAndMergeWith returns an error.

func (*DDSketch) Encode

func (s *DDSketch) Encode(b *[]byte, omitIndexMapping bool)

Encode serializes the sketch and appends the serialized content to the provided []byte. If the capacity of the provided []byte is large enough, Encode does not allocate memory space. When the index mapping is known at the time of deserialization, omitIndexMapping can be set to true to avoid encoding it and to make the serialized content smaller. The encoding format is described in the encoding/flag module.

func (*DDSketch) ForEach

func (s *DDSketch) ForEach(f func(value, count float64) (stop bool))

ForEach applies f on the bins of the sketches until f returns true. There is no guarantee on the bin iteration order.

func (*DDSketch) GetCount

func (s *DDSketch) GetCount() float64

Return the total number of values that have been added to this sketch.

func (*DDSketch) GetMaxValue

func (s *DDSketch) GetMaxValue() (float64, error)

Return the maximum value that has been added to this sketch. Return a non-nil error if the sketch is empty.

func (*DDSketch) GetMinValue

func (s *DDSketch) GetMinValue() (float64, error)

Return the minimum value that has been added to this sketch. Returns a non-nil error if the sketch is empty.

func (*DDSketch) GetSum

func (s *DDSketch) GetSum() (sum float64)

GetSum returns an approximation of the sum of the values that have been added to the sketch. If the values that have been added to the sketch all have the same sign, the approximation error has the relative accuracy guarantees of the mapping used for this sketch.

func (*DDSketch) GetValueAtQuantile

func (s *DDSketch) GetValueAtQuantile(quantile float64) (float64, error)

Return the value at the specified quantile. Return a non-nil error if the quantile is invalid or if the sketch is empty.

func (*DDSketch) GetValuesAtQuantiles

func (s *DDSketch) GetValuesAtQuantiles(quantiles []float64) ([]float64, error)

Return the values at the respective specified quantiles. Return a non-nil error if any of the quantiles is invalid or if the sketch is empty.

func (*DDSketch) IsEmpty

func (s *DDSketch) IsEmpty() bool

Return true iff no value has been added to this sketch.

func (*DDSketch) MergeWith

func (s *DDSketch) MergeWith(other *DDSketch) error

Merges the other sketch into this one. After this operation, this sketch encodes the values that were added to both this and the other sketches.

func (*DDSketch) Reweight

func (s *DDSketch) Reweight(w float64) error

Reweight multiplies all values from the sketch by w, but keeps the same global distribution. w has to be strictly greater than 0.

func (*DDSketch) ToProto

func (s *DDSketch) ToProto() *sketchpb.DDSketch

Generates a protobuf representation of this DDSketch.

Source Files

ddsketch.go

Directories

PathSynopsis
ddsketch/encoding
ddsketch/mapping
ddsketch/pb
ddsketch/pb/sketchpb
ddsketch/store
Version
v1.1.0
Published
Jul 29, 2021
Platform
windows/amd64
Imports
6 packages
Last checked
1 day ago

Tools for package owners.