

 Amazon Redshift は、パッチ 198 以降、新しい Python UDF の作成をサポートしなくなります。既存の 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-overview"></a>

このトピックでは、Amazon Redshift で HyperLogLog スケッチを使用する方法について説明します。HyperLogLog は、データセット内の個別要素の数の近似を指す、COUNT DISTINCT 問題のアルゴリズムです。HyperLogLog スケッチは、データセットに関する一意性のデータの配列です。

*HyperLogLog* は，多重セットの基数を推定するために使用されるアルゴリズムです。*Cardinality* とは、多重セット内の個別値の数を指します。たとえば、\$14,3,6,2,2,6,4,3,6,2,2,3\$1 のセットでは、基数は 4 で、4、3、6、2 という個別の値を持ちます。

HyperLogLog アルゴリズムの精度 (m 値とも呼ばれる) は、推定基数の精度に影響を与える可能性があります。基数の推定では、Amazon Redshift はデフォルトの精度値 15 を使用します。小さいデータセットでは、この値は最大 26 になる可能性があります。したがって、平均相対誤差の範囲は 0.01～0.6% です。

多重セットの基数を計算するとき、HyperLogLog アルゴリズムは、HLL スケッチと呼ばれる構成を生成します。*HLL スケッチ*は、多重セット内の個別値に関する情報をカプセル化します。Amazon Redshift データ型 HLLSKETCH は、このようなスケッチ値を表します。このデータ型は、Amazon Redshift テーブルにスケッチを保存するために使用できます。さらに、Amazon Redshift は、集計関数およびスカラー関数として HLLSKETCH 値に適用できるオペレーションをサポートしています。これらの関数を使用して、HLLSKETCH の基数を抽出し、複数の HLLSKETCH 値を組み合わせることができます。

HLLSKETCH データ型は、大規模なデータセットから基数を抽出するときに、クエリのパフォーマンスに大きな利点をもたらします。これらのデータセットは、HLLSKETCH 値を使用して事前に集計し、テーブルに保存できます。Amazon Redshift は、基になるデータセットにアクセスすることなく、保存されている HLLSKETCH 値から直接基数を抽出できます。

HLL スケッチを処理する場合、Amazon Redshift はスケッチのメモリフットプリントを最小限に抑え、抽出された基数の精度を最大化する最適化を実行します。Amazon Redshift は、HLL スケッチに疎と蜜といった 2 つの表現を使用します。HLLSKETCH は疎フォーマットで始まります。新しい値が挿入されると、そのサイズが大きくなります。そのサイズが密表現のサイズに達すると、Amazon Redshift はスケッチを疎から密に自動的に変換します。

Amazon Redshift は、スケッチが疎形式の場合、HLLSKETCH を JSON としてインポート、エクスポート、およびプリントします。Amazon Redshift は、スケッチが密集形式の場合、HLLSKETCH を Base64 文字列としてインポート、エクスポート、およびプリントします。UNLOAD の詳細については、[HLLSKETCH データ型のアンロード](r_UNLOAD.md#unload-usage-hll) を参照してください。テキストまたはコンマ区切り値 (CSV) データを Amazon Redshift にインポートするには、COPY コマンドを使用します。詳細については、「[HLLSKETCH データ型のロード](copy-usage_notes-hll.md)」を参照してください。

HyperLogLog で使用される関数の詳細については、[HyperLogLog 関数](hyperloglog-functions.md) を参照してください。

**Topics**
+ [考慮事項](hyperloglog-functions-usage-notes.md)
+ [制限事項](hyperloglog-functions-limitations.md)
+ [例](r_HLL-examples.md)