uniqCombined
uniqCombined
引入版本:v1.1
计算不同参数值的大致数量。 它以确定性的方式提供结果(不依赖于查询处理顺序)。
注意
由于对非 String 类型使用 32 位哈希,对于明显大于 UINT_MAX 的基数,结果会有非常大的误差(在几十亿个不同值之后误差会迅速增大)。
如果基数大于 UINT_MAX,应改用 uniqCombined64。
与 uniq 函数相比,uniqCombined 函数:
- 内存消耗减少数倍
- 计算精度提高数倍
- 通常性能略低。在某些场景下,uniqCombined 的表现可能优于 uniq,例如在通过网络传输大量聚合状态的分布式查询中
Details
实现细节
此函数为聚合中的所有参数计算哈希(String 使用 64 位哈希,否则为 32 位哈希),然后在计算中使用该哈希值。 它结合使用了三种算法:数组、哈希表和带误差校正表的 HyperLogLog:- 对于少量不同元素,使用数组
- 当集合大小更大时,使用哈希表
- 对于更多元素时,使用 HyperLogLog,它会占用固定大小的内存
语法
参数
HLL_precision— 可选。HyperLogLog 中单元格数量的以 2 为底的对数。默认值为 17,对应约 96 KiB 的空间(2^17 个单元格,每个单元格 6 位)。取值范围:[12, 20]。UInt8
参数说明
返回值
返回一个 UInt64 类型的数值,表示不同参数值的近似个数。UInt64
示例
基本用法
使用自定义精度
另请参阅