

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# HLL\_UNION 函數
<a name="HLL_UNION"></a>

HLL\_UNION 函數將兩個 HLL 草圖合併為單一的統一草圖。它使用 HyperLogLog (HLL) 演算法，將兩個草圖合併為單一草圖。查詢可以使用產生的緩衝區，以`hll_sketch_estimate`函數的長整數來計算近似的唯一計數。

## 語法
<a name="HLL_UNION-syntax"></a>

```
HLL_UNION (( expr1, expr2 [, allowDifferentLgConfigK ] ))
```

## 引數
<a name="HLL_UNION-argument"></a>

 *exprN*   
保留 HLL\_SKETCH\_AGG 產生的草圖的`BINARY`表達式。

*allowDifferentLgConfigK*  
選用的 BOOLEAN 表達式，可控制是否允許將兩個草圖與不同的 lgConfigK 值合併。預設值為 `false`。

## 傳回類型
<a name="HLL_UNION-return-type"></a>

HLL\_UNION 函數會傳回 BINARY 緩衝區，其中包含因合併輸入表達式而計算的 HyperLogLog 草圖。當 `allowDifferentLgConfigK` 參數為 時`true`，結果草圖會使用兩個所提供`lgConfigK`值中較小的值。

## 範例
<a name="HLL_UNION-examples"></a>

下列範例使用 HyperLogLog (HLL) 素描演算法來估計資料集`col2`中兩欄 `col1`和 之間的唯一值計數。

 `hll_sketch_agg(col1)` 函數會為資料`col1`欄中的唯一值建立 HLL 草圖。

`hll_sketch_agg(col2)` 函數會為 col2 欄中的唯一值建立 HLL 草圖。

`hll_union(...)` 函數將步驟 1 和 2 中建立的兩個 HLL 草圖合併為單一、統一的 HLL 草圖。

`hll_sketch_estimate(...)` 函數會採用合併的 HLL 草圖，並預估 `col1`和 中值的唯一計數`col2`。

`FROM VALUES` 子句會產生一個包含 5 列的測試資料集，其中 `col1`包含值 1、1、2、2 和 3，而 `col2` 包含值 4、4、5、5 和 6。

此查詢的結果是跨 `col1`和 值的估計唯一計數`col2`，即 6。HLL 素描演算法提供一種有效方法來估算唯一元素的數量，即使是大型資料集也一樣，而不必存放完整的一組唯一值。在此範例中，`hll_union`函數會用來結合兩個資料欄的 HLL 草圖，這允許在整個資料集中估計唯一計數，而不只是針對每個資料欄個別估算。

```
SELECT hll_sketch_estimate(
  hll_union(
    hll_sketch_agg(col1),
    hll_sketch_agg(col2)))
  FROM VALUES
    (1, 4),
    (1, 4),
    (2, 5),
    (2, 5),
    (3, 6) AS tab(col1, col2);
  6
```

下列範例和上一個範例之間的差異在於未在`hll_sketch_agg`函數呼叫中指定精確度參數 (12 位元）。在此情況下，會使用 14 位元的預設精確度，相較於先前使用 12 位元精確度的範例，這可提供更準確的唯一計數預估。

```
SELECT hll_sketch_estimate(
  hll_union(
    hll_sketch_agg(col1, 14),
    hll_sketch_agg(col2, 14)))
  FROM VALUES
    (1, 4),
    (1, 4),
    (2, 5),
    (2, 5),
    (3, 6) AS tab(col1, col2);
```