hll
type for storing hyperloglog data
Overview
| Package | Version | Category | License | Language |
|---|---|---|---|---|
hll | 2.21 | FEAT | Apache-2.0 | C++ |
| ID | Extension | Bin | Lib | Load | Create | Trust | Reloc | Schema |
|---|---|---|---|---|---|---|---|---|
| 2700 | hll | No | Yes | No | Yes | No | No | - |
| Related | count_distinct datasketches omnisketch topn ddsketch tdigest roaringbitmap bloom rum pgfaceting |
|---|
Version
| Type | Repo | Version | PG Ver | Package | Deps |
|---|---|---|---|---|---|
| EXT | PGDG | 2.21 | 1817161514 | hll | - |
| RPM | PGDG | 2.21 | 1817161514 | hll_$v | - |
| DEB | PGDG | 2.21 | 1817161514 | postgresql-$v-hll | - |
Install
You can install hll directly. First, make sure the PGDG repository is added and enabled:
Install the extension using pig or apt/yum/dnf:
Install
pig
dnf
apt
Create Extension:
Usage
The hll extension provides a HyperLogLog data type for probabilistic distinct-value counting. It enables efficient approximate COUNT(DISTINCT) operations with configurable accuracy, and supports set union operations that allow pre-aggregated data to be combined without loss of precision.
Data Types
hll– HyperLogLog accumulator with parameters:hll(log2m, regwidth, expthresh, sparseon)hll_hashval– Hashed value type for insertion into HLL structures
Core Functions
| Function | Description |
|---|---|
hll_empty() | Create an empty HLL |
hll_add(hll, hll_hashval) | Add a hashed value to an HLL |
hll_cardinality(hll) | Estimate distinct count |
hll_union(hll, hll) | Combine two HLLs |
hll_add_agg(hll_hashval) | Aggregate hashed values into a single HLL |
hll_union_agg(hll) | Merge multiple HLLs into one |
hll_print(hll) | Display HLL parameters and contents |
Hash Functions
| Function | Input Type |
|---|---|
hll_hash_boolean(boolean [, seed]) | boolean |
hll_hash_smallint(smallint [, seed]) | smallint |
hll_hash_integer(integer [, seed]) | integer |
hll_hash_bigint(bigint [, seed]) | bigint |
hll_hash_bytea(bytea [, seed]) | bytea |
hll_hash_text(text [, seed]) | text |
hll_hash_any(any [, seed]) | any (dynamic dispatch, slower) |
Operators
| Operator | Function | Example |
|---|---|---|
|| | hll_add / hll_union | users || hll_hash_integer(123) |
# | hll_cardinality | #users |
Example: Daily Unique User Tracking
Configuration Parameters
log2m(4–31): Number of registers as log-base-2. Controls accuracy with relative error of +/-1.04/sqrt(2^log2m). Default: 11.regwidth(1–8): Bits per register. Tuned alongside log2m for maximum cardinality estimation. Default: 5.expthresh(-1 to 18): Controls EXPLICIT-to-SPARSE promotion.-1for auto mode,0to skip EXPLICIT. Default: -1.sparseon(0 or 1): Enables/disables SPARSE representation. Default: 1.
All inputs to a given HLL must use the same hash seed. HLLs intended for union operations must have been populated with identically-seeded hash values.
Was this page helpful?
Thanks—your feedback helps us improve this page.
What got in the way? (optional)