近似函数
GreptimeDB 提供近似去重计数和近似分位数函数。
注意
这些函数仍处于实验阶段,后续版本可能会调整。
近似去重计数 (HLL)
GreptimeDB 使用 HyperLogLog (HLL) 快速计算近似去重计数,并控制内存使用。三个函数分别用于创建 sketch、合并 sketch 和读取近似计数。
注意
HLL 返回估计值,而非精确计数。其相对标准误差约为 1.04 / sqrt(m),其中 m 为寄存器数量。GreptimeDB 使用 16,384 个寄存器,对应约 0.8125% 的相对标准误差。
hll
hll(value) 将每个值转换为 STRING,再聚合为二进制 HLL 状态。该状态可以存入 BINARY 列、与其他状态合并,或传给 hll_count。持久化状态后,可以在不保留或扫描全部原始值的情况下计算后续聚合结果。
hll_merge
hll_merge(hll_state) 将 hll 生成的多个二进制状态聚合为一个状态,可用于合并不同分组、时间窗口或数据源的 sketch。这支持分阶段聚合:先按一种粒度创建并保存状态,再将其合并成粒度更大的聚合结果。
hll_count
hll_count(hll_state) 从 hll 创建或 hll_merge 合并的状态中返回近似去重计数。HLL 状态是二进制中间值,并非可直接阅读的计数;查询返回估计值时需要使用 hll_count。