

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# HLL\$1SKETCH\$1AGG 函数
<a name="HLL_SKETCH_AGG"></a>

HLL\$1SKETCH\$1AGG 聚合函数根据指定列中的值创建 HLL 草图。它返回封装输入表达式值的 HLLSKETCH 数据类型。

HLL\$1SKETCH\$1AGG 聚合函数适用于任何数据类型并忽略空值。

如果表中没有行或所有行都为 NULL，则生成的草图没有 `{"version":1,"logm":15,"sparse":{"indices":[],"values":[]}}` 之类的索引值对。

## 语法
<a name="HLL_SKETCH_AGG-synopsis"></a>

```
HLL_SKETCH_AGG (aggregate_expression[, lgConfigK ] )
```

## 参数
<a name="HLL_SKETCH_AGG-argument"></a>

 *aggregate\$1expression*   
任何类型为 INT、BIGINT、STRING 或 BINARY 的表达式，将对其进行唯一计数。任何`NULL`值都将被忽略。

*lgConfigk*  
一个介于 4 到 21 之间的可选整数常数，包括默认值 12。K 的 log-base-2，其中 K 是草图的桶或槽的数量。

## 返回类型
<a name="HLL_SKETCH_AGG-return-type"></a>

HLL\$1SKETCH\$1AGG 函数返回一个非空二进制缓冲区，其中包含由于消耗和聚合聚合组中的所有输入值而计算出的 HyperLogLog 草图。

## 示例
<a name="HLL_SKETCH_AGG-examples"></a>

以下示例使用 HyperLogLog (HLL) 算法来估计`col`列中不同值的数量。该`hll_sketch_agg(col, 12)`函数聚合 col 列中的值，使用 12 的精度创建 HLL 草图。然后，该`hll_sketch_estimate()`函数用于根据生成的 HLL 草图估计不同值的数量。查询的最终结果是 3，它表示该`col`列中估计的不同值数量。在本例中，不同的值为 1、2 和 3。

```
SELECT hll_sketch_estimate(hll_sketch_agg(col, 12))
    FROM VALUES (1), (1), (2), (2), (3) tab(col);
  3
```

以下示例还使用 HLL 算法来估计`col`列中不同值的数量，但它没有为 HLL 草图指定精度值。在这种情况下，它使用默认精度 14。该`hll_sketch_agg(col)`函数获取`col`列中的值并创建一个 HyperLogLog (HLL) 草图，这是一个紧凑的数据结构，可用于估计元素的不同数量。该`hll_sketch_estimate(hll_sketch_agg(col))`函数采用在上一步中创建的 HLL 草图，并计算`col`列中不同值计数的估计值。查询的最终结果是 3，它表示该`col`列中估计的不同值数量。在本例中，不同的值为 1、2 和 3。

```
SELECT hll_sketch_estimate(hll_sketch_agg(col))
FROM VALUES (1), (1), (2), (2), (3) tab(col);
3
```