Help improve this documentation
This documentation is still new and evolving. If you spot any mistakes, unclear explanations, or missing details, please open an issue.
Your feedback helps us improve!
Hyperloglog operatorsโ
This page lists all operators available in the hyperloglog sub-package of ro.
Installโ
First, import the sub-package in your project:
go get -u github.com/samber/ro/plugins/hyperloglog
CountDistinctโ
Estimates the number of distinct items in a stream using HyperLogLog algorithm.
import (
"github.com/samber/ro"
rohyperloglog "github.com/samber/ro/plugins/hyperloglog"
"github.com/cloudfoundry/gosigar"
)
obs := ro.Pipe[string, uint64](
ro.Just(
"apple", "banana", "apple", "orange", "banana",
"grape", "apple", "kiwi", "orange", "mango",
),
rohyperloglog.CountDistinct(14, false, func(s string) uint64 {
return gosigar.Sum64(s)
}),
)
sub := obs.Subscribe(ro.PrintObserver[uint64]())
defer sub.Unsubscribe()
// Next: 6
// CompletedSimilar:Prototype:func CountDistinct[T comparable](precision uint8, sparse bool, hashFunc func(input T) uint64)CountDistinctReduceโ
Emits running distinct count estimates for each item in the stream.
import (
"hash/fnv"
"github.com/samber/ro"
rohyperloglog "github.com/samber/ro/plugins/hyperloglog"
)
obs := ro.Pipe[string, uint64](
ro.Just(
"apple", "banana", "apple", "orange", "banana",
"grape", "apple", "kiwi", "orange", "mango",
),
rohyperloglog.CountDistinctReduce(14, false, func(s string) uint64 {
h := fnv.New64a()
h.Write([]byte(s))
return h.Sum64()
}),
)
sub := obs.Subscribe(ro.PrintObserver[uint64]())
defer sub.Unsubscribe()
// Next: 1
// Next: 2
// Next: 2
// Next: 3
// Next: 3
// Next: 4
// Next: 4
// Next: 5
// Next: 5
// Next: 6
// CompletedSimilar:Prototype:func CountDistinctReduce[T comparable](precision uint8, sparse bool, hashFunc func(input T) uint64)