

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

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

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

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

```
HLL_UNION_AGG ( expr [, allowDifferentLgConfigK ] )
```

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

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

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

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

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

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

下列範例使用 HyperLogLog (HLL) 草圖演算法來估計多個 HLL 草圖中值的唯一計數。

第一個範例預估資料集中值的唯一計數。

```
SELECT hll_sketch_estimate(hll_union_agg(sketch, true))
    FROM (SELECT hll_sketch_agg(col) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 20) as sketch
            FROM VALUES (1) AS tab(col));
  1
```

內部查詢會建立兩個 HLL 草圖：
+ 第一個 SELECT 陳述式會從單一值 1 建立草圖。
+ 第二個 SELECT 陳述式會從另一個單一值 1 建立草圖，但精確度為 20。

外部查詢使用 HLL\_UNION\_AGG 函數，將兩個草圖合併為單一草圖。然後，它會將 HLL\_SKETCH\_ESTIMATE 函數套用到此合併草圖，以估算值的唯一計數。

此查詢的結果是資料`col`欄中值的估計唯一計數，即 `1`。這表示 1 的兩個輸入值被視為唯一，即使它們具有相同的值。

第二個範例包含 HLL\_UNION\_AGG 函數的不同精確度參數。在這種情況下，兩個 HLL 草圖都是以 14 位元的精確度建立，這可讓它們成功`hll_union_agg`與 `true` 參數搭配使用。

```
SELECT hll_sketch_estimate(hll_union_agg(sketch, true))
    FROM (SELECT hll_sketch_agg(col, 14) as sketch
            FROM VALUES (1) AS tab(col)
          UNION ALL
          SELECT hll_sketch_agg(col, 14) as sketch
            FROM VALUES (1) AS tab(col));
  1
```

查詢的最終結果是估計的唯一計數，在這種情況下，它也是 `1`。這表示 1 的兩個輸入值被視為唯一，即使它們具有相同的值。