跳转到主内容
跳转到主内容

uniqHLL12

uniqHLL12

引入版本:v1.1

使用 HyperLogLog 算法计算不同参数取值个数的近似值。

注意

我们不推荐使用此函数。在大多数情况下,请使用 uniquniqCombined 函数。

Details

实现细节 此函数会为聚合中的所有参数计算哈希值,然后在计算中使用该哈希值。 它使用 HyperLogLog 算法来估算不同参数值的数量。

使用 2^12 个 5 位单元。 状态的大小略大于 2.5 KB。 对于较小的数据集(<10K 个元素),结果不太精确(误差最高约为 10%)。 但对于高基数数据集(10K-100M),结果相当精确,最大误差约为 1.6%。 当数据量超过 100M 时,估算误差会增大;对于基数极高的数据集(1B+ 个元素),该函数会返回非常不精确的结果。

返回确定性的结果(不依赖于查询处理顺序)。

语法

uniqHLL12(x[, ...])

参数

返回值

返回一个 UInt64 类型的数值,表示不同参数值的近似数量。UInt64

示例

基本用法

CREATE TABLE example_hll
(
    id UInt32,
    category String
)
ENGINE = Memory;

INSERT INTO example_hll VALUES
(1, 'A'), (2, 'B'), (3, 'A'), (4, 'C'), (5, 'B'), (6, 'A');

SELECT uniqHLL12(category) AS hll_unique_categories
FROM example_hll;
┌─hll_unique_categories─┐
│                     3 │
└───────────────────────┘

另请参阅