本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
HLL_SKETCH_ESTIMATE 函数
HLL_SKETCH_ESTIMATE 函数获取 HLL 草图并估计该草图所表示的唯一元素的数量。它使用 HyperLogLog (HLL) 算法计算给定列中唯一值数量的概率近似值,消耗先前由 HLL_SKETCH_AGG 函数生成的称为草图缓冲区的二进制表示形式,并将结果作为大整数返回。
HLL 草图算法提供了一种有效的方法来估计唯一元素的数量,即使对于大型数据集也是如此,而无需存储完整的唯一值集。
hll_union
和hll_union_agg
函数还可以通过消耗和合并这些缓冲区作为输入来将草图组合在一起。
语法
HLL_SKETCH_ESTIMATE (hllsketch_expression)
参数
- hllsketch_expression
-
一个包含由 HLL_SKETCH_AGG 生成的草图的
BINARY
表达式
返回类型
HLL_SKETCH_ESTIMATE 函数返回一个 BIGINT 值,该值是输入草图表示的近似不同计数。
示例
以下示例使用 HyperLogLog (HLL) 草绘算法来估计列中值的基数(唯一计数)。col
该hll_sketch_agg(col, 12)
函数取col
列并使用 12 位的精度创建 HLL 草图。HLL 草图是一种近似数据结构,可以有效地估计集合中唯一元素的数量。该hll_sketch_estimate()
函数采用由创建的 HLL 草图,hll_sketch_agg
并估计草图所表示的值的基数(唯一计数)。FROM VALUES (1), (1), (2), (2), (3)
tab(col);
生成一个包含 5 行的测试数据集,其中该col
列包含值 1、1、2、2 和 3。此查询的结果是该col
列中值的估计唯一计数,即 3。
SELECT hll_sketch_estimate(hll_sketch_agg(col, 12)) FROM VALUES (1), (1), (2), (2), (3) tab(col); 3
以下示例与上一个示例的区别在于,hll_sketch_agg
函数调用中未指定精度参数(12 位)。在这种情况下,将使用 14 位的默认精度,与之前使用 12 位精度的示例相比,这可能为唯一计数提供更准确的估计值。
SELECT hll_sketch_estimate(hll_sketch_agg(col)) FROM VALUES (1), (1), (2), (2), (3) tab(col); 3