

 Amazon Redshift 將不再支援從修補程式 198 開始建立新的 Python UDFs。現有 Python UDF 將繼續正常運作至 2026 年 6 月 30 日。如需詳細資訊，請參閱[部落格文章](https://aws.amazon.com/blogs/big-data/amazon-redshift-python-user-defined-functions-will-reach-end-of-support-after-june-30-2026/)。

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

# HyperLogLog 檔函數
<a name="hyperloglog-functions"></a>

接下來，您可以找到 Amazon Redshift 支援的 SQL HyperLogLog 函數的說明。

**Topics**
+ [HLL 函數](r_HLL_function.md)
+ [HLL\$1CREATE\$1SKETCH 函數](r_HLL_CREATE_SKETCH.md)
+ [HLL\$1CARDINALITY 函數](r_HLL_CARDINALITY.md)
+ [HLL\$1COMBINE 函數](r_HLL_COMBINE.md)
+ [HLL\$1COMBINE\$1SKETCHES 函數](r_HLL_COMBINE_SKETCHES.md)

# HLL 函數
<a name="r_HLL_function"></a>

HLL 函數傳回輸入運算式值的 HyperLogLog 基數。HLL 函數適用於除 HLLSKETCH 資料類型以外的任何資料類型。HLL 函數忽略 NULL 值。當資料表中沒有資料列或所有資料列都是 NULL 時，產生的基數為 0。

## 語法
<a name="r_HLL_function-synopsis"></a>

```
HLL (aggregate_expression)
```

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

 *aggregate\$1expression*   
提供要彙總之值的任何有效運算式，例如欄名。此函數支援除 HLLSKETCH、GEOMETRY、GEOGRAPHY 和 VARBYTE 以外的任何資料類型作為輸入。

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

HLL 函數會傳回 BIGINT 或 INT8 值。

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

下列範例會傳回資料表 `a_table` 中資料欄 `an_int` 的基數。

```
CREATE TABLE a_table(an_int INT);
INSERT INTO a_table VALUES (1), (2), (3), (4);

SELECT hll(an_int) AS cardinality FROM a_table;
cardinality
-------------
4
```

# HLL\$1CREATE\$1SKETCH 函數
<a name="r_HLL_CREATE_SKETCH"></a>

HLL\$1CREATE\$1SKETCH 函數傳回封裝輸入運算式值的 HLLSKETCH 資料類型。HLL\$1CREATE\$1SKETCH 函數適用於任何資料類型，並忽略 NULL 值。如果表格中沒有列或所有列都為 NULL，則產生的草圖沒有索引-值對，例如 `{"version":1,"logm":15,"sparse":{"indices":[],"values":[]}}`。

## 語法
<a name="r_HLL_CREATE_SKETCH-synopsis"></a>

```
HLL_CREATE_SKETCH (aggregate_expression)
```

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

 *aggregate\$1expression*   
提供要彙總之值的任何有效運算式，例如欄名。NULL 值將被忽略。此函數支援除 HLLSKETCH、GEOMETRY、GEOGRAPHY 和 VARBYTE 以外的任何資料類型作為輸入。

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

HLL\$1CREATE\$1SKETCH 函數會傳回 HLLSKETCH 值。

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

下列範例會傳回資料表 `a_table` 中資料欄 `an_int` 的 HLLSKETCH 類型。JSON 物件用於匯入、匯出或列印草圖時表示稀疏的 HyperLogLog 草圖。字串表示 (Base64 格式) 用於表示密集的 HyperLogLog 草圖。

```
CREATE TABLE a_table(an_int INT);
INSERT INTO a_table VALUES (1), (2), (3), (4);

SELECT hll_create_sketch(an_int) AS sketch FROM a_table;
sketch
-------------------------------------------------------------------------------------------------------
{"version":1,"logm":15,"sparse":{"indices":[20812342,20850007,22362299,47158030],"values":[1,2,1,1]}}
(1 row)
```

# HLL\$1CARDINALITY 函數
<a name="r_HLL_CARDINALITY"></a>

HLL\$1CARDINALITY 函數會傳回輸入 HLLSKETCH 資料類型的基數。

## 語法
<a name="r_HLL_CARDINALITY-synopsis"></a>

```
HLL_CARDINALITY (hllsketch_expression)
```

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

 *hllsketch\$1expression*   
任何演算為 HLLSKETCH 類型的有效運算式，例如欄名稱。輸入值是 HLLSKETCH 資料類型。

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

HLL\$1CARDINALITY 函數會傳回 BIGINT 或 INT8 值。

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

下列範例會傳回資料表 `hll_table` 中資料欄 `sketch` 的基數。

```
CREATE TABLE a_table(an_int INT, b_int INT);
INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2);

CREATE TABLE hll_table (sketch HLLSKETCH);
INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int;

SELECT hll_cardinality(sketch) AS cardinality FROM hll_table;
cardinality
-------------
6
4
(2 rows)
```

# HLL\$1COMBINE 函數
<a name="r_HLL_COMBINE"></a>

HLL\$1COMBINE 彙總函數會傳回合併所有輸入 HLLSKETCH 值的 HLLSKETCH 資料類型。

兩個或多個 HyperLogLog 草圖的組合是一個新的 HLLSKETCH，它封裝有關每個輸入草圖所代表的不同值的聯集的資訊。在合併草圖之後，Amazon Redshift 會擷取兩個或多個資料集的聯集基數。如需如何合併多個草圖的相關資訊，請參閱[範例：從合併多個草圖中傳回 HyperLogLog 草圖](r_HLL-examples.md#hll-examples-multiple-sketches)。

## 語法
<a name="r_HLL_COMBINE-synopsis"></a>

```
HLL_COMBINE (hllsketch_expression)
```

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

 *hllsketch\$1expression*   
任何演算為 HLLSKETCH 類型的有效運算式，例如欄名稱。輸入值是 HLLSKETCH 資料類型。

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

HLL\$1COMBINE 函數會傳回 HLLSKETCH 類型。

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

下列範例會傳回資料表 `hll_table` 中的合併 HLLSKETCH 值。

```
CREATE TABLE a_table(an_int INT, b_int INT);
INSERT INTO a_table VALUES (1,1), (2,1), (3,1), (4,1), (1,2), (2,2), (3,2), (4,2), (5,2), (6,2);

CREATE TABLE hll_table (sketch HLLSKETCH);
INSERT INTO hll_table select hll_create_sketch(an_int) from a_table group by b_int;

SELECT hll_combine(sketch) AS sketches FROM hll_table;
sketches
----------------------------------------------------------------------------------------------------------------------------
{"version":1,"logm":15,"sparse":{"indices":[20812342,20850007,22362299,40314817,42650774,47158030],"values":[1,2,1,3,2,1]}}
(1 row)
```

# HLL\$1COMBINE\$1SKETCHES 函數
<a name="r_HLL_COMBINE_SKETCHES"></a>

HLL\$1COMBINE\$1SKETCHES 是純量函數，用作輸入兩個 HLLSKETCH 值，並將它們合併為一個 HLLSKETCH。

兩個或多個 HyperLogLog 草圖的組合是一個新的 HLLSKETCH，它封裝有關每個輸入草圖所代表的不同值的聯集的資訊。

## 語法
<a name="r_HLL_COMBINE_SKETCHES-synopsis"></a>

```
HLL_COMBINE_SKETCHES (hllsketch_expression1, hllsketch_expression2)
```

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

 *hllsketch\$1expression1* 和 *hllsketch\$1expression2*   
任何演算為 HLLSKETCH 類型的有效運算式，例如欄名稱。

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

HLL\$1COMBINE\$1SKETCHES 函數會傳回 HLLSKETCH 類型。

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

下列範例會傳回資料表 `hll_table` 中的合併 HLLSKETCH 值。

```
WITH tbl1(x, y)
     AS (SELECT Hll_create_sketch(1),
                Hll_create_sketch(2)
         UNION ALL
         SELECT Hll_create_sketch(3),
                Hll_create_sketch(4)
         UNION ALL
         SELECT Hll_create_sketch(5),
                Hll_create_sketch(6)
         UNION ALL
         SELECT Hll_create_sketch(7),
                Hll_create_sketch(8)),
     tbl2(x, y)
     AS (SELECT Hll_create_sketch(9),
                Hll_create_sketch(10)
         UNION ALL
         SELECT Hll_create_sketch(11),
                Hll_create_sketch(12)
         UNION ALL
         SELECT Hll_create_sketch(13),
                Hll_create_sketch(14)
         UNION ALL
         SELECT Hll_create_sketch(15),
                Hll_create_sketch(16)
         UNION ALL
         SELECT Hll_create_sketch(NULL),
                Hll_create_sketch(NULL)),
     tbl3(x, y)
     AS (SELECT *
         FROM   tbl1
         UNION ALL
         SELECT *
         FROM   tbl2)
SELECT Hll_combine_sketches(x, y)
FROM   tbl3;
```