uniq
Introduced in: v1.1.0 计算参数中不同值的近似个数。 该函数使用自适应采样算法。在计算状态中,函数会使用最多 65536 个元素哈希值的样本。该算法精度很高,且 CPU 效率也很高。当查询中包含多个此类函数时,使用 uniq 的速度几乎与使用其他聚合函数一样快。Implementation details
Implementation details
该函数会先对聚合中的所有参数计算哈希值,再将其用于计算。
它使用自适应采样算法。
在计算状态中,函数会使用最多 65536 个元素哈希值的样本。
该算法精度很高,且 CPU 效率也很高。
当查询中包含多个此类函数时,使用
uniq 的速度几乎与使用其他聚合函数一样快。该样本保存的是 32 位哈希值,无法区分超过数十亿个值,因此还会额外维护
一个经过大幅稀疏化的完整 64 位哈希值小样本 (大约每 262144 个值保留一个哈希值,
最多 16384 个) ,当基数达到约二十亿时,改用该样本进行估算。这样一来,即使基数达到数千亿乃至更高,
估算结果仍能保持准确 (误差约在 1% 以内) ;而在这种情况下,26.8 之前版本的服务器
返回的结果毫无意义 (issue #6078) 。这些旧版服务器写入的状态不包含 64 位样本,
因此与其合并时,并入的值只能保持 32 位精度。UInt64 类型的数值,表示不同值的近似数量。UInt64
示例
使用示例
Query
Response
Query
Response